需要在我的程序中使某些Ruby字符串成为不可变的.什么是最好的解决方案?在String课堂上写一个包装器?
该freeze方法对我不起作用.我看到这freeze将不允许你解冻对象.
以下是我的情况:我有一个类将字符串传递给回调.该字符串恰好是类的实例变量,可能很大.我不希望回调修改它,但仍然允许类随意修改它.
And*_*imm 10
以下是我的情况:我有一个类将字符串传递给回调.
将字符串的副本传递给回调工作?
该字符串恰好是类的实例变量,可能很大.我不希望回调修改它,但仍然允许类随意修改它.
如果你担心字符串的大小,那么使用String#dup会有所帮助.它将创建一个具有不同的新对象,object_id但不会复制该字符串的内容,除非新字符串(或原始字符串)被修改.这称为"写入时复制",并在Seeing double中描述:Ruby如何共享字符串值.
| 归档时间: |
|
| 查看次数: |
1697 次 |
| 最近记录: |