一個常量由大寫字母開頭.它應最多被賦值一次.在Ruby的當前版本中,常量的再賦值只會產(chǎn)生警告而不是錯誤(non-ANSI版的eval.rb不會報告這一警告)
ruby>fluid=30
???30
ruby>fluid=31
???31
ruby>Solid=32
???32
ruby>Solid=33
???(eval):1:?warning:?already?initialized?constant?Solid
???33?
常量可以定義在類里,但不像實變量,它們可以在類的外部訪問.
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文檔中心的所有文章標明[原創(chuàng)]的均為本站作品,版權(quán)屬RUBY中文化計劃,若轉(zhuǎn)載請注明;標明[翻譯]的其外文版權(quán)歸原作者,譯文版權(quán)屬RUBY中文化計劃;標明[轉(zhuǎn)貼]的,若原作者感到侵犯了他的著作權(quán),那么請及時跟主持人聯(lián)系,我們會盡快更正。
?