5

Collections.unmodifiableListJava和Ruby 标准 API 中是否有等价物Collections.unmodifiableMap

4

2 回答 2

7

使用freezeAPI:

防止对 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

您还可以将仓鼠gem 用于其他不可变数据结构。

于 2014-05-26T20:23:49.423 回答
2

例如,如果要创建不可修改(不可变)列表:

a = [ "a", "b", "c" ]
a.freeze
于 2014-05-26T20:23:56.670 回答