いま、Rubyの試験を受けようと勉強しています。
freezeメソッドで凍結されたオブジェクトは、変更できない、ということで覚えてきましたが、
直接、代入すると代入できてしまいます。これって仕様ですか?それとも僕の勘違いですか?
こんがらがってしまいました。。教えてください。よろしくお願い致します。
通常、理解している動作
c = {:a => "A"}.freeze
=> {:a=>"A"}
c[:a] = "B"
RuntimeError: can't modify frozen Hash
from (irb):6
from /home/rot/.rbenv/versions/2.3.1/bin/irb:11:in `<main>'
あれ?
str = "A".freeze
=> "A"
str.frozen?
=> true
str = "B"
=> "B"
p str
=> "B"
str.frozen?
=> false
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/19 01:19