在Ruby的文档的dup说:在一般情况下,clone并dup可能在派生类不同的语义。虽然clone用于复制对象(包括其内部状态),但dup通常使用后代对象的类来创建新实例。但是当我做一些测试时,我发现它们实际上是相同的:class Test attr_accessor :xendx = Test.newx.x = 7y = x.dupz = x.cloney.x => 7z.x => 7那么这两种方法有什么区别?
3 回答

泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
处理ActiveRecord时也存在显着差异:
dup 创建一个没有设置id的新对象,这样你就可以通过点击将新对象保存到数据库中 .save
category2 = category.dup
#=> #<Category id: nil, name: "Favorites">
clone 创建一个具有相同id的新对象,因此对该新对象所做的所有更改都将覆盖原始记录(如果按下) .save
category2 = category.clone
#=> #<Category id: 1, name: "Favorites">
- 3 回答
- 0 关注
- 735 浏览
添加回答
举报
0/150
提交
取消