[Ruby] Re[2]: [Ruby] Вызов глобальных ф-ий из класса в Си

Kachalov Anton mouse at linux.ru.net
Sun Nov 17 15:40:46 MSK 2002


Eugene Scripnik пишет:

>Monday, November 11, 2002, 8:40:15 PM, you wrote:
>
>AB> On Mon, Nov 11, 2002 at 09:24:27PM +0300, Kachalov Anton wrote:
>  
>
>>>mouse at lrn.ru пишет:
>>>
>>>      
>>>
>>>>Как в Си вызвать глобальную ф-ию? rb_func_call() позволяет вызывать методы 
>>>>для
>>>>каких-либо объектов,а как ему сказаьть,что я хочу Глобальную ф-ию
>>>>вызвать? rb_eval_string не подходит - нужна скорость
>>>>        
>>>>
>>>Есть у кого-нить какие-нить мыслишки?
>>>      
>>>
>AB> Не являются ли глобальные функции суть методы модуля Kernel?
>Не совсем, все _стандартные_ глобальные функции на самом деле функции
>Kernel'а и добавляются в toplevel object и являются его private
>методами. Все добавленные глобальные функции являются приватными
>singleton методами toplevel объекта, но в модуль Kernel они не
>добавляются. Поскольку эти методы приватные, то вызвать их
>можно исключительно не указывая ресивер (из Руби).
>Как это сделать на С даже не представляю.
>Единственное, что я накопал в исходниках, так это переменную
>ruby_top_self, которая содержит toplevel object.
>Возможно поможет rb_func_call(ruby_top_self, ...)?
>
>  
>
не помогло ;-(
./freecraft.rb:31:in `func': undefined method `testRuby' for 
#<Object:0x2ad2fa74> (NoMethodError)

Rgds,
Anton

-- 
ALTLinux Team
http://www.altlinux.ru
LRN Team
http://www.lrn.ru
FreeCraft Team
http://freecraft.sourceforge.net/





More information about the Ruby mailing list