但是这也知道能怪自己一时没注意到这项默认的悲哀。

精灵使者 发表于 2011-9-2 23:43
bitmap在无论什么情况下,都不能用a = b 而得用a = b.clone
举例
a.bitmap = RPG::Cache.character(001-act ...
bitmap在无论什么情况下,都不能用a = b 而得用a = b.clone [...]
我在想是不是真正的纯面向对象要想赋值都得用a = b.clone啊
所有变量储存的都是实体对象的指针……
[...] 类似于String神马的有处理特权。。可以直接赋值而不用clone创建新的对象……
>> 若是用 Object#clone 拷贝值,被调用者便止于修改复件而无法修改原件。
这一点很重要,如果首先共享了内存而又对共享后的东西作改动的话,所有的Cache的被调用者将会调用修改后的东西,那会是很危险的。
看你的解释貌似是[分配一个新的String对象]就等于clone然后赋值了,这部分操作被ruby封装了。
| 欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |