【发布时间】:2026-01-25 08:30:02
【问题描述】:
我正在尝试将一个数组放到另一个现有数组中,并且将其所有项目放到一个现有集合中。这是最小的示例:
require "set"
def add(myarr, bigarr, myset)
bigarr << myarr
myset |= Set.new(myarr)
end
bigarr = []
myset = Set.new
add([1, 2], bigarr, myset)
产生bigarr = [1, 2] .. 好的,但是myset = {} .. 是空的。我对在 Ruby 中传递参数知之甚少(应该是按值)——如果是数组,值应该是对其内容的引用,那么我不知道 set 的值可能是什么。
问题是:
- 导致此行为的
Array和Set之间的实质性区别是什么? - 是否有任何方法可以强制 Ruby 传递引用,或者是否有其他推荐的方法来解决引用问题?
提前致谢!
【问题讨论】:
标签: ruby pass-by-reference pass-by-value