有什麼區別時,我聲明瞭一個對象,具有雙「@ '
@@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沒有提供的外觀*任何*努力自己回答這個問題。 –