Ruby 中的只读数组

问题描述 投票:0回答:1

当我需要从 C# 或 Java 中的类返回不可变集合时,我将其作为 IEnumerable 接口返回。 Ruby 中的标准方法是什么?克隆?冻结?

ruby
1个回答
5
投票

如果您希望在尝试修改时引发

RuntimeError
,请使用
freeze()
。如果您只想阻止调用者修改您的数据,那么
clone()
是一个不错的选择。

请记住,freeze() 可能不会像您期望的那样工作。它只保护表层不被改性,并且不会解冻。

就我个人而言,我从来不需要

freeze()
,但
clone()
通常很有用。

© www.soinside.com 2019 - 2024. All rights reserved.