在Java的Collections.unmodifiableList
和Collections.unmodifiableMap
的Ruby标准API中是否有相同的内容?
答案 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