为什么Ruby方法在其范围之外更改数组?

时间:2016-02-03 02:00:45

标签: ruby immutability

运行此代码时:

def someFunction(someArray)
  (0...(someArray.size)).each do |i| someArray[i] += 1 end
  return someArray
end

array = [0, 1, 2]
someFunction(array) # => [1, 2, 3]
array # => [1, 2, 3]

array已更改。在C中,数组作为指针传递,但我认为Ruby确实没有通过引用传递#。这里发生了什么,我怎样才能确保一种方法不会改变它的范围以外的东西?

0 个答案:

没有答案