Answers:
Ruby本机支持模块中的类变量,因此您可以直接使用类变量,而不能使用某些代理或伪类变量:
module Site
@@name = "StackOverflow"
def self.setName(value)
@@name = value
end
def self.name
@@name
end
end
Site.name # => "StackOverflow"
Site.setName("Test")
Site.name # => "Test"
defined?(@@foo) => "class variable"
。
@
实例变量中获得相同的结果。使用类变量是否有特定原因?谢谢回复。
T.get
和T::get
?
您可以在模块中设置类实例变量。
module MyModule
class << self; attr_accessor :var; end
end
MyModule.var = 'this is saved at @var'
MyModule.var
=> "this is saved at @var"