C# または Java のクラスから不変のコレクションを返す必要がある場合、それを IEnumerable インターフェイスとして返します。 Ruby でこれを行う標準的な方法は何ですか?クローン?氷結?
変更を試みたときに RuntimeError を発生させたい場合は、freeze() を使用します。呼び出し元がデータを変更できないようにしたいだけの場合は、 clone() が良い選択です。
freeze() は期待どおりに動作しない可能性があることに注意してください。表面層を変更から保護するだけであり、解凍はありません。
個人的には、freeze() が必要になったことはありませんが、clone() は便利なことがよくあります。