仅仅提供两个示例。
请相信我,除非很熟悉 ruby 元编程,而且形成一定的思考惯例!否则一定会让你晕倒,吐血。
class A
end
# 下面的两个示例是相同的.
A.instance_eval { def say_hello; puts "hello"; end }
A.instance_eval { def self.say_hello; puts "hello"; end }
# 下面的两个示例也是相同的
A.instance_eval { define_method(:say_hello) { puts "hello" } }
A.class_eval { define_method(:say_hello) { puts "hello" } }
一切的根源:
default_definee 和 self