读者在Ruby模块calss?
这个问题在这里已经有了答案:
它是这样工作的:
module Attr
attr_accessor :my_variable
end
class MyClass
@my_variable = "hi"
def initialize
@my_variable = "ho"
end
end
您include
在该类中include
该模块以构建实例变量@my_variable
:
MyClass.include Attr
c = MyClass.new
c.my_variable #=> "ho"
c.my_variable = "huh?" #=> "huh?"
c.my_variable #=> "huh?"
您extend
模块extend
到该类以构建类实例变量@my_variable
:
MyClass.extend Attr #=> MyClass
MyClass.my_variable #=> "hi"
MyClass.my_variable = "nuts" #=> "nuts"
MyClass.my_variable #=> "nuts"
c.my_variable #=> "huh?"
如您所见,实例变量@my_variable
与类实例变量@my_variable
。 就像它们有不同的名称一样,它们共存。
更常见的情况是,您会在类定义中看到include
和extend
,但效果与上面的相同:
class MyClass
include Attr
extend Attr
@my_variable = "hi"
def initialize
@my_variable = "ho"
end
end
链接地址: http://www.djcxy.com/p/25773.html