В чем разница между методами дублирования и клонирования в Ruby?

Документы 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

Так в чем же разница между этими двумя методами?

213
задан Andrew Marshall 14 July 2013 в 05:24
поделиться