有什么区别时,我声明了一个对象,具有双“@ '
@@lexicon = Lexicon.new()
并在Ruby中用单个'@'声明对象?
@lexicon = Lexicon.new()
有什么区别时,我声明了一个对象,具有双“@ '
@@lexicon = Lexicon.new()
并在Ruby中用单个'@'声明对象?
@lexicon = Lexicon.new()
区别在于第一个是类变量,第二个是实例变量。
实例变量仅对可用,该实例为对象的实例。即
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
类变量是可用于类的所有实例(和子类,这个),其中定义了类变量。
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
我不明白为什么这个问题是downvoted。这是一个完全合法的问题。 –
我也没有:(所有的人都不是红宝石天才像他们一样投了票。如果这个网站不适合学习者,那么他们不应该让我们注册,除非我们有10年的编程经验 – Yasin
@RyanBigg:如果你把鼠标悬停在downvote arrow你会得到一个工具提示,其中列出了一些downvoting可能的合法理由,其中一个是“这个问题没有显示任何研究工作”,这个问题没有:即使是最基本的初学者也回答了这个问题Ruby教程,它可以通过3秒的Google搜索得到平淡的回答,第一个结果是在SO上重复的。代码片段违反基本Ruby编码风格的事实进一步加强了OP没有提供的外观*任何*努力自己回答这个问题。 –