2013-01-16 11 views

答えて

7

これは変更できないことを意味します。あなたはfreezeメソッドで設定します。

s = "a" 

concatは、文字列インスタンスを変更します。

s.concat("b") 
# => "ab" 

あなたは文字列をフリーズ

は:

s.freeze 

、その後、あなたはそれ以上concatを適用することはできません。

s + "c" 
# => "abc" 
2

がobjにさらに変更を防止:

s.concat("c") 
# => RuntimeError: can't modify frozen String 

ただし、受信機を変更しない方法を適用することができます。変更が試行されると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 

Doco

関連する問題