当我使用double' @'声明一个对象时有什么区别?
@@lexicon = Lexicon.new()
并使用单个' @'声明对象在Ruby?
@lexicon = Lexicon.new()
答案 0 :(得分:6)
区别在于第一个是类变量,第二个是实例变量。
实例变量仅可用于对象的实例。即。
class Yasin
def foo=(value)
@foo = value
end
def foo
@foo
end
end
yasin = Yasin.new
yasin.foo=1
yasin.foo #=> 1
yasin_2 = Yasin.new
yasin_2.foo #> nil
类变量可用于类(和子类,iirc)的所有实例,其中定义了类变量。
class Yasin
def foo=(value)
@@foo = value
end
def foo
@@foo
end
end
yasin = Yasin.new
yasin.foo=1
yasin.foo #=> 1
yasin_2 = Yasin.new
yasin_2.foo #=> 1