動的const宣言

こんなの作ったら

def const(x)
  x.freeze
end

const char *a = "hoge"; ぽい感じで

irb(main):004:0> const a = "hoge"
=> "hoge"
irb(main):005:0> a[1] = "a"
TypeError: can't modify frozen string

こういう風に書けるなぁ、と思った。

irb(main):006:0> const a = "hoge"
=> "hoge"
irb(main):007:0> a = "hige"
=> "hige"
irb(main):008:0> a[2] = "d"
=> "d"

それだけのネタ。あまり意味は無い。


というか、大文字始まりの定数が

irb(main):009:0> A = "hoge"
=> "hoge"
irb(main):010:0> A[1] = "a"
=> "a"
irb(main):011:0> A
=> "hage"
irb(main):012:0> A = "hige"
(irb):10: warning: already initialized constant A
=> "hige"

こういう動作することを初めて知った。
実行時にwarning出るだけなのね。