在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 關注
- 760 瀏覽
添加回答
舉報
0/150
提交
取消