【发布时间】:2011-07-08 22:21:56
【问题描述】:
代码:
module Mod1
def self.included(base)
base.class_eval do
class << self
attr_accessor :test
end
@test = 'test1'
end
end
end
module Mod2
def self.included(base)
base.instance_eval do
class << self
attr_accessor :test
end
@test = 'test2'
end
end
end
class Foo1
include Mod1
end
class Foo2
include Mod2
end
puts Foo1.test
puts Foo2.test
输出是:
test1
test2
我意识到一个在类的上下文中进行评估,而另一个在实例的上下文中进行评估,但是......在这种情况下,为什么它们会这样返回? (我本以为其中一个会出现异常。)
【问题讨论】:
标签: ruby