class Foo
include Module.new { class_eval "def lab; puts 'm' end" }
def lab
super
puts 'c'
end
end
Foo.new.lab #=> m c
======================================= =================================instance_eval vs class_eval in module
class Foo
include Module.new { instance_eval "def lab; puts 'm' end" }
def lab
super
puts 'c'
end
end
注意這裏我改變class_eval到instance_eval的
Foo.new.lab rescue nil#=> no super class method lab
Foo.lab #=> undefined method lab for Foo class
所以看起來包括模塊既沒有定義實例方法也沒有定義類方法。
任何解釋發生了什麼?
這段代碼在mac上用ruby 1.8.7測試過。
優秀的解釋。將事情分開並一次一步地看着它會有所幫助。 – 2010-08-19 17:41:41