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

Eugene Scripnik Eugene.Scripnik at itgrp.net
Tue Nov 12 11:03:08 MSK 2002


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, ...)?

-- 
Best regards,
 Eugene [team Enticla] [IT Group]    mailto:Eugene.Scripnik at itgrp.net




More information about the Ruby mailing list