使Ruby字符串不可变
需要在我的程序中使某些
Ruby字符串成为不可变的.什么是最好的解决方案?在String类上编写包装器?
冻结方法对我不起作用.我看到冻结不允许你解冻对象. 以下是我的情况:我有一个类将字符串传递给回调.该字符串恰好是类的实例变量,可能很大.我不希望回调修改它,但仍然允许类随意修改它. 解决方法
将字符串的副本传递给回调工作?
如果你担心字符串的大小,那么使用String#dup会有所帮助.它将创建一个具有不同object_id的新对象,但不会复制该字符串的内容,除非新字符串(或原始字符串)被修改.这称为“写入时复制”,并在Seeing double: how Ruby shares string values中描述. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |