定数とクラス変数
クラス変数へは、外部から直接代入できません(コンパイル時(?)のエラー)。
定数には、外部から代入ができます。再代入すると警告がでます。
class Rubyco Message = "Hello" @@message = "hello" end # p Rubyco.Message #=> undefined method `Message' for Rubyco:Class (NoMethodError) # Rubyco.Message = "Nice!" #=> undefined method `Message=' for Rubyco:Class (NoMethodError) p Rubyco::Message Rubyco::Message = "Good!" p Rubyco::Message # p Rubyco.@@message #=> parse error, unexpected tCVAR
実行結果です。
"Hello" a.rb:9: warning: already initialized constant Message "Good!"
疑問:実行時じゃないときはコンパイル時?(眠くて文章がおかしい)