在Ruby中,String
或Array
(等)对象为'冻结'意味着什么?设置或修改此属性的方式/位置?
答案 0 :(得分:8)
这意味着您无法修改它。您可以通过freeze
方法设置它。
s = "a"
concat
修改字符串实例。
s.concat("b")
# => "ab"
冻结字符串时:
s.freeze
然后,您无法再申请concat
。
s.concat("c")
# => RuntimeError: can't modify frozen String
但是,您可以应用不修改接收器的方法:
s + "c"
# => "abc"
答案 1 :(得分: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