一個(gè)實(shí)變量由@開(kāi)頭,它的范圍限制在?self?對(duì)象內(nèi).兩個(gè)不同的對(duì)象,即使屬于同一個(gè)類(lèi),也可以擁有不同值的實(shí)變量.從對(duì)象外部來(lái)看,實(shí)變量不能改變甚至觀察(比如,?Ruby的實(shí)變量從來(lái)不是公用的),除非方法由程序員明確聲明.像全局變量一樣,實(shí)變量在初始前的值是nil.
Ruby的實(shí)變量用不著聲明.這暗含著對(duì)象的彈性結(jié)構(gòu).實(shí)際上,每個(gè)實(shí)變量都是在第一次出現(xiàn)時(shí)動(dòng)態(tài)加入對(duì)象的.
ruby>?class?InstTest
????|???def?set_foo(n)
????|?????@foo?=?n
????|???end
????|???def?set_bar(n)
????|?????@bar?=?n
????|???end
????|?end
???nil
ruby>?i?=?InstTest.new
???#<InstTest:0x83678>
ruby>?i.set_foo(2)
???2
ruby>?i
???#<InstTest:0x83678?@foo=2>
ruby>?i.set_bar(4)
???4
ruby>?i
???#<InstTest:0x83678?@foo=2,?@bar=4>?
注意上例中直到調(diào)用了?set_bar方法?i?才報(bào)告?@bar?的值.
版權(quán)聲明:RUBY文檔中心的所有文章標(biāo)明[原創(chuàng)]的均為本站作品,版權(quán)屬RUBY中文化計(jì)劃,若轉(zhuǎn)載請(qǐng)注明;標(biāo)明[翻譯]的其外文版權(quán)歸原作者,譯文版權(quán)屬RUBY中文化計(jì)劃;標(biāo)明[轉(zhuǎn)貼]的,若原作者感到侵犯了他的著作權(quán),那么請(qǐng)及時(shí)跟主持人聯(lián)系,我們會(huì)盡快更正。
?