Ruby相当于Java的Collections.unmodifiableList和Collections.unmodifiableMap

时间:2014-05-26 20:12:56

标签: java ruby collections unmodifiable

在Java的Collections.unmodifiableListCollections.unmodifiableMap的Ruby标准API中是否有相同的内容?

2 个答案:

答案 0 :(得分:7)

使用freeze API:

  

防止对obj的进一步修改。将引发RuntimeError   如果尝试修改。没有办法解冻冻结   宾语。另请参见Object#frozen?。

     

此方法返回self。

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

产生

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

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

答案 1 :(得分:2)

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

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