我正在努力理解自己的语言。
我的疑问是,无论是自我语言的深克隆还是浅克隆。即,无论克隆只是克隆对象插槽还是插槽内的对象都被克隆。
我正在努力理解自己的语言。
我的疑问是,无论是自我语言的深克隆还是浅克隆。即,无论克隆只是克隆对象插槽还是插槽内的对象都被克隆。
正如 Tobias 所说,通常copy
消息是作为浅拷贝实现的。
从语义上讲,copy
在 Self 中几乎意味着“给我一个安全/有用的副本”。对于许多对象来说,这只是一个浅拷贝。
对象负责实现自己的copy
,或者通过委托给纯浅拷贝方法(例如在其中实现)traits clonable
或通过拥有自己的copy
插槽来实现。
例如,变形通常copy
通过给您一个可用的副本而不是浅层副本来响应消息。不应该复制的对象也经常实现或委托给一个方法copy = (self)
,以便复制的尝试只返回原始对象。
如果你想要一个严格的浅拷贝,大多数可拷贝对象都会响应,clone
尽管这应该小心使用。基础是 VM 定义的原始方法_Clone
,它是浅拷贝。