2
傳遞它的參數我回答了this問題,並偶然發現了一些奇怪的東西。 Ruby通過值傳遞參數,但變量本身是引用。因此,爲什麼第一個方法似乎通過引用傳遞其參數?爲什麼這個Ruby方法通過參考
require 'set'
require 'benchmark'
def add_item1!(item, list)
list << item unless list.include?(item)
end
def add_item2(item, list)
list |= [item]
end
def add_item3(item, list)
set = Set.new(list)
set << item
list = set.to_a
end
array1 = [3,2,1,4]
add_item1!(5, array1)
p array1 # [3, 2, 1, 4, 5]
array2 = [3,2,1,4]
add_item2(5, array2)
p array2 # [3, 2, 1, 4]
array3 = [3,2,1,4]
add_item3(5, array3)
p array3 # [3, 2, 1, 4]
我明白了,我應該用.replace修改原始對象 – peter