为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

智慧大石 2019-09-19 09:41:23
在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">


查看完整回答
反对 回复 2019-09-19
  • 3 回答
  • 0 关注
  • 730 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信