2013-01-16 18 views

Odpowiedz

7

Oznacza to, że nie można go zmodyfikować. Ustawia się to metodą freeze.

s = "a" 

concat modyfikuje instancję napisu.

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

Po zamrożeniu ciągu:

s.freeze 

następnie, nie można zastosować concat więcej.

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

Można jednak stosować metody, które nie modyfikują Odbiornik:

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

zapobiega dalszemu modyfikacji obj. RuntimeError zostanie podniesiony, jeśli podjęto próbę modyfikacji. Nie ma możliwości odmrożenia zamrożonego obiektu. Zobacz także Object # frozen.

a = [ "a", "b", "c" ] 
a.freeze 
a << "z" 

produkuje:

prog.rb:3:in `<<': can't modify frozen array (RuntimeError) 
from prog.rb:3 

Doco