String
Rubyでは、またはArray
(etc)オブジェクトが「凍結」されるとはどういう意味ですか? このプロパティはどのように/どこで設定または変更されますか?
質問する
5010 次
2 に答える
8
変更できないということです。メソッドで設定しfreeze
ます。
s = "a"
concat
文字列インスタンスを変更します。
s.concat("b")
# => "ab"
文字列をフリーズすると:
s.freeze
その後、それ以上申請することはできませんconcat
。
s.concat("c")
# => RuntimeError: can't modify frozen String
ただし、レシーバーを変更しないメソッドを適用できます。
s + "c"
# => "abc"
于 2013-01-16T05:10:49.813 に答える
2
obj へのそれ以上の変更を防ぎます。変更を試みると、RuntimeError が発生します。凍結されたオブジェクトを解凍する方法はありません。Object#frozen? も参照してください。
a = [ "a", "b", "c" ]
a.freeze
a << "z"
生成:
prog.rb:3:in `<<': can't modify frozen array (RuntimeError)
from prog.rb:3
于 2013-01-16T05:12:55.360 に答える