一個(gè)常量由大寫字母開頭.它應(yīng)最多被賦值一次.在Ruby的當(dāng)前版本中,常量的再賦值只會(huì)產(chǎn)生警告而不是錯(cuò)誤(non-ANSI版的eval.rb不會(huì)報(bào)告這一警告)
ruby>fluid=30
???30
ruby>fluid=31
???31
ruby>Solid=32
???32
ruby>Solid=33
???(eval):1:?warning:?already?initialized?constant?Solid
???33?
常量可以定義在類里,但不像實(shí)變量,它們可以在類的外部訪問(wèn).
ruby>?class?ConstClass
????|???C1=101
????|???C2=102
????|???C3=103
????|???def?show
????|?????print?C1,"?",C2,"?",C3,"\n"
????|???end
????|?end
???nil
ruby>?C1
ERR:?(eval):1:?uninitialized?constant?C1
ruby>?ConstClass::C1
???101
ruby>?ConstClass.new.show
101?102?103
???nil?
常量也可以定義在模塊里.
ruby>?module?ConstModule
????|???C1=101
????|???C2=102
????|???C3=103
????|???def?showConstants
????|?????print?C1,"?",C2,"?",C3,"\n"
????|???end
????|?end
???nil
ruby>?C1
ERR:?(eval):1:?uninitialized?constant?C1
ruby>?include?ConstModule
???Object
ruby>?C1
???101
ruby>?showConstants
101?102?103
???nil
ruby>?C1=99??#?not?really?a?good?idea
???99
ruby>?C1
???99
ruby>?ConstModule::C1??#?the?module's?constant?is?undisturbed?...
???101
ruby>?ConstModule::C1=99?
ERR:?(eval):1:?compile?error
(eval):1:?parse?error
ConstModule::C1=99
????????????????
^ruby>?ConstModule::C1??#?..?regardless?of?how?we?tamper?with?it.
???101?
版權(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ì)盡快更正。
?