Документы 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
Так в чем же разница между этими двумя методами?