【发布时间】:2011-04-14 03:22:01
【问题描述】:
我试图弄清楚为什么这个代码:
class BaseClass
end
module Extensions
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def message(message)
@@message = message
end
end
end
BaseClass.send(:include, Extensions)
class ExtendedClass < BaseClass
message "hello world!"
def say_message
puts @@message
end
end
ExtendedClass.new.say_message
输出:
test.rb:22:in `say_message': uninitialized class variable @@message in ExtendedClass (NameError)
from test.rb:26:in `<main>'
而不是
hello world!
你能解释一下为什么吗?
【问题讨论】:
标签: ruby class variables module metaprogramming