Ruby docs для 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
Итак, каковы различия между этими двумя методами?