为什么kernel的private method不能在一个class的method定义内部调用?

为什么kernel的private method不能在一个class的method定义内部调用?

请看下面的代码:

[Copy to clipboard] [ - ]
NoMethodError: undefined method `define_method' for #<Klass:0x2e6ba84>
   from (irb):3:in `add_method'
   from (irb):36

原因可能是define_method 是一个类方法,就像belongs_to这样,只能在类级别调用。
try this

[Copy to clipboard] [ - ]
class_eval 这个绕了道弯来实现需要。呵呵。
Defines an instance method in the receiver. The method parameter can be a Proc or Method object. If a block is specified, it is used as the method body. This block is evaluated using instance_eval, a point that is tricky to demonstrate because define_method is private. (This is why we resort to the send hack in this example.)

特别是红字标识这一句,使用了instance_eval,为什么就不能直接在方法定义的内部调用define_method呢?

我现在有点想了解ruby这个解释器的工作原理了,不然有些问题很难想清楚。

我正在看IronRuby的源码,不过比较没空,还在看第一个.cs文件。寒一个。
我没看到上下文,就按你贴在这里的这段文章,替你翻译一下,看是否对你理解define_method有帮助,仅供参考。
先说明一下,译文里的方括号是我认为对该英文词比较合适的解释,但作为参考列在[]。另外,我认为大家都知道的术语,就不翻译了,这样比较可以使理解到位。

译文:

在这个receiver中定义一个instance method。这个Method参数可以是一个Proc或Method object。如果一个block是指定的,它就被用来作为这个method body[主体]。这个block是用instance_eval来求值[也可译为来表示]的--对于demonstrate[演示或示范]而言,这是个技巧性[或微妙]的要点,因为define_method是private的。(这就是在这个例子中我们为什么要采用send hack。)