[Ruby] Q: module_eval
Тим Алексеевский
realtim на mail.ru
Пн Сен 20 12:36:33 MSD 2004
Alexey I. Froloff (Сен 20, 12:25):
> * Yuri Leikind <y.leikind@> [040920 12:11]:
> > > В своей программе я вызываю несколько раз Base.create_object() с
> > > нужными параметрами и по идее возвращаемое значение должно быть
> > > новосозданным классом. Или нет?
> > В данном примере возвращается nil. Это то что возвращает module_eval
> У меня тоже. Но судя по документации:
>
> $ ri module_eval
> ----------------------------------------------------- Module#module_eval
> mod.class_eval(string [, filename [, lineno]]) => obj
> mod.module_eval {|| block } => obj
> ------------------------------------------------------------------------
> Evaluates the string or block in the context of _mod_. This can be
> used to add methods to a class. +module_eval+ returns the result of
> evaluating its argument.
>
> Результат eval'а "class Something; end" разве не будет об'ект
> класса Class?
Вроде нет:
[tim на 12:32:01:~]$ irb
irb(main):001:0> a=class A; end
=> nil
irb(main):002:0> a
=> nil
irb(main):003:0>
Может:
irb(main):004:0> a=eval("class A; end; A")
=> A
irb(main):005:0> a
=> A
irb(main):006:0>
Тим
Подробная информация о списке рассылки Ruby