Есть два метода ниже;оба одинаковы, за исключением одного clone
s ввода, тогда как другого нет.
Метод 1
arr = [1,2,3,1,2,3]
def remove_smallest(array)
new = array
new.reject! {|i| i <= new.min}
new
end
remove_smallest(arr)
#=> [2,3,2,3]
arr
#=> [2,3,2,3]
Метод 2
arr = [1,2,3,1,2,3]
def remove_smallest(array)
new = array.clone
new.reject! {|i| i <= new.min}
new
end
remove_smallest(arr)
#=> [2,3,2,3]
arr
#=> [1,2,3,1,2,3]
Без clone
метод изменяет исходный ввод, даже если я выполняю все операции с копией исходного массива.
Зачем нужен явный метод clone
чтобы избежать этой мутации?