在下面的代码片段中,数组
deck
应该等于[6,9,5,6,5,1,2]
,因为Ruby通过引用传递数组。在方法调用后,deck的值没有改变。为什么会这样?def count_cut!(deck)
s1, s2 = deck[0, deck.last], deck[deck.last..-2]
deck = s2 + s1 + [deck.last]
end
deck = [5, 1, 6, 9, 5, 6, 2]
count_cut!(deck)
p deck
我正在使用Ruby 1.9.2-p180版本。
deck = s2 + s1 + [deck.last]
时,你创建了一个新的对象。如果你在方法分配后和count_cut!(deck)
后使用puts deck.object_id
进行测试,就可以验证它。 - Vasiliy Ermolovich