【发布时间】:2015-10-08 23:47:27
【问题描述】:
我回答了this 问题并偶然发现了一些奇怪的东西。 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]
【问题讨论】:
标签: ruby parameters reference pass-by-reference pass-by-value