技術メモ: 2007年8月アーカイブ

*p1*rubyで定数の中身が書き換えられてしまう? >> $ irb irb(main):001:0> TESTSTR="apple orange" => "apple orange" irb(main):002:0> teststr=TESTSTR => "apple orange" irb(main):003:0> teststr.gsub!('apple','banana') => "banana orange" irb(main):004:0> TESTSTR => "banana orange" << これっておかしくないですか? >> $ ruby -v ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-freebsd6] << 報告したいところですが、MLに入ると大量のメールが届くのがめんどくさいですねぇ。 あ。でもこれはやっぱりおかしい。 >> $ irb irb(main):001:0> TESTSTR="apple orange" => "apple orange" irb(main):002:0> TESTSTR.gsub!('apple','banana') => "banana orange" << 期待する結果:TESTSTRは定数なので、書き換えようとしたらエラーになってほしい 現在の結果:gsub!を使うと書き換えられてしまう >> irb(main):003:0> TESTSTR="hogehoge" (irb):3: warning: already initialized constant TESTSTR => "hogehoge" <<  つまり、オブジェクトごと置き換えようとしたときはエラーになるけど、オブジェクトの中身は変更可能ということでしょうか。うーん。 #しょうがないのでyahooメールでMLに入って相談することにした。 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/43777