【发布时间】:2011-04-01 05:07:21
【问题描述】:
class Foo
include Module.new { class_eval "def lab; puts 'm' end" }
def lab
super
puts 'c'
end
end
Foo.new.lab #=> m c
================================================ ==========================
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 上测试。
【问题讨论】:
标签: ruby