Ruby的dup和clone方法有什么区别?

在Ruby的文档的dup说:


在一般情况下,clone并dup可能在派生类不同的语义。虽然clone用于复制对象(包括其内部状态),但dup通常使用后代对象的类来创建新实例。


但是当我做一些测试时,我发现它们实际上是相同的:


class Test

   attr_accessor :x

end


x = Test.new

x.x = 7

y = x.dup

z = x.clone

y.x => 7

z.x => 7

那么这两种方法有什么区别?


智慧大石
浏览 732回答 3
3回答

泛舟湖上清波郎朗

处理ActiveRecord时也存在显着差异:dup 创建一个没有设置id的新对象,这样你就可以通过点击将新对象保存到数据库中 .savecategory2 = category.dup#=> #<Category id: nil, name: "Favorites">&nbsp;clone 创建一个具有相同id的新对象,因此对该新对象所做的所有更改都将覆盖原始记录(如果按下) .savecategory2 = category.clone#=> #<Category id: 1, name: "Favorites">
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby