DictionaryForumContacts

 Speleo

link 6.12.2012 5:09 
Subject: wrap a class progr.
Добрый день!

Помогите корректно перевести указанную фразу в следующем контексте:

So far, you have wrapped free functions (that is, non-class methods) as Ruby class methods. You have passed references to the Ruby object by declaring the C functions with the first argument Object. This approach works, but isn't good enough to wrap a C++ class as a Ruby object. To wrap a C++ class, you still use the define_class method, except that you now "templatize" it with the C++ class type

Склоняюсь к варианту "обертывание класса". Вроде бы где-то слышал такой перевод выражения, но подтверждающие источники практически отсутствуют.

Пока что переведено так:

До сих пор вы обертывали в качестве методов классов Ruby свободные функции (т. е. методы, не принадлежащие ни к какому классу). Вы передавали ссылки на объект Ruby путем объявления функций C с первым аргументом Object. Такой подход работает, но он недостаточно хорош для обертывания класса C++ в качестве объекта Ruby. Чтобы обернуть какой-либо класс C++, вы по-прежнему используете метод define_class, но теперь создаете из него шаблон для конкретного типа класса C++.

Всем спасибо!

 overdoze

link 6.12.2012 5:42 
из встречавшегося:
класс-обертка
обертка класса/функции
обернуть класс/функцию

теперь по деталям:
So far, you have wrapped free functions (that is, non-class methods) as Ruby class methods
пока что вы в качестве методов для Ruby-класса использовали обертки free функций

остальные места с wrap наверное приемлемы

use the define_class method, except that you now "templatize" it with the C++ class type
..., но теперь его надо параметризовать именем класса С++
(прим: речь видимо о вызове шаблонной версии - define_class<ClassName>(...) - да?)

 Speleo

link 6.12.2012 6:06 
overdoze, большое спасибо!

 stream15

link 6.12.2012 9:43 
So far, you have wrapped free functions (that is, non-class methods) as Ruby class methods

*** пока что вы в качестве методов для Ruby-класса использовали обертки free функций

Это не совсем верно. Это означает, что все методы Ruby-класса это обертки (оболочки) свободных функций. Но это не следует из предложения на английском. К тому же акцент должен быть не на методах класса, а на свободных функциях.

До сих пор, в качестве оболочек (оберток) свободных функций Вы использовали методы Ruby- класса.

 stream15

link 6.12.2012 9:53 
Лично мне все эти обертки (буквальный перевод с английского) режут слух.

Класс - оболочка

обертка класса/функции = создание оболочки для класса/функции

 overdoze

link 6.12.2012 17:46 
К тому же акцент должен быть не на методах класса, а на свободных функциях.

вот именно!

До сих пор, в качестве оболочек (оберток) свободных функций Вы использовали методы Ruby- класса.

stream15, а вы хорошо понимаете, что там предлагается сделать, из чего и зачем?
имхо смысл у вас получился обратный нужному. и акцент у вас на "методах Ruby- класса" (тема-рема)

 stream15

link 7.12.2012 11:38 
Благодарю и прошу прощения.

Мой вариант - НЕПРАВИЛЬНЫЙ!

Ваш вариант перевода все - таки звучит не совсем корректно, хотя нельзя сказать что это такая же серьезная ошибка как моя.
(*** пока что вы в качестве методов для Ruby-класса использовали обертки free функций)

Дело в том, что *обертка свободной функции* в данном случае это и есть метод Ruby - класса, который специально создается чтобы служить оболочкой для свободной функции.

Получается, что в качестве метода класса используется метод этого же класса ...

Строго говоря, ничего нельзя использовать в качестве методов класса кроме самих методов этого класса. Я не могу придумать контекст, в котором употребление фразы "в качестве методов класса" было бы корректным.

Вариант автора этой темы:

До сих пор вы обертывали в качестве методов классов Ruby свободные функции (т. е. методы, не принадлежащие ни к какому классу)

обертывали в качестве методов - тоже звучит не до конца корректно.
обертывать можно чем - то, а не в качестве чего - то.

Правильно - обертывали методами Ruby- класса.

Итак:

До сих пор Вы обертывали методами Ruby-класса (только) свободные функции.

Но на мой взгляд лучше:

До сих пор вы использовали методы Ruby-класса в качестве оболочек (только) для свободных функций.

 overdoze

link 7.12.2012 12:04 
Дело в том, что *обертка свободной функции* в данном случае это и есть метод Ruby - класса, который специально создается чтобы служить оболочкой для свободной функции.

не согласен

насколько я понимаю:
цель здесь -- получить в результате Ruby-класс (что включает его методы)
а обертывание -- то ли "свободных" функций, то ли классов С++ -- это способ/техника получения этого результата

 stream15

link 7.12.2012 13:12 
Не совсем понятно с чем именно Вы несогласны.

(*** пока что вы в качестве методов для Ruby-класса использовали обертки free функций)

Что у Вас *обертки свободных функций* это методы Ruby-класса?

Или вторая часть? (... который специально создается чтобы служить оболочкой для свободной функции. )

-- насколько я понимаю:
цель здесь -- получить в результате Ruby-класс (что включает его методы)

Это правильно, но Вы же не можете создать Ruby-класс сразу целиком. Вначале Вы его просто объявляете, в минимально необходимой конфигурации. А потом начинаете думать, какие свободные С - функции Вам понадобятся. Найдя очередную "полезную" функцию Вы СПЕЦИАЛЬНО для нее создаете метод-оболочку. То есть, если Вы нашли одну функцию, то будет один метод - оболочка, если 100, то 100 методов-оболочек.

Именно в этом смысле ... который (метод - оболочка) СПЕЦИАЛЬНО создается чтобы служить оболочкой для свободной функции.

То есть, в ходе создания класса Вы СПЕЦИАЛЬНО для каждой конкретной свободной функции создаете метод - оболочку
класса Ruby.

Разумеется это не конечная цель. Целью данной конкретной операции является "встраивание* свободной функции в Ruby- класс.

 

You need to be logged in to post in the forum

Get short URL | Photo