タグ

Rubyとdynamic constant assignmentに関するwlbhiroのブックマーク (1)

  • Rubyの定数、もうひとつの意外な仕様 - アインシュタインの電話番号

    Rubyの定数が、他の言語の定数とはちょっと違う意外な仕様なのは理解していたが、もうひとつ意外な仕様があることを最近知った。なんかちょっと釣りっぽいタイトルになっちゃったけど。 再代入可能な定数 Rubyの定数は、他の言語のように変更を許さない(再代入させない)定数ではないことは有名。少なくとも自分は、Rubyを始めてから結構早い段階でこの仕様について知った。そして、最初にこれを知ったとき「これって定数じゃなくね?」って思った覚えがある。 HOGE = "hoge" HOGE = "fuga" puts HOGE このように再代入しても、警告は出るものの、実際の値は変わってしまう。 2: warning: already initialized constant HOGE fuga Rubyのこういった仕様に対して、良い意味での“ゆるふわ感”を感じる。こんなにゆるくて大丈夫?と思うくらい。

    Rubyの定数、もうひとつの意外な仕様 - アインシュタインの電話番号
  • 1