gpt4 book ai didi

ruby 可选参数,如果更改,对调用者有影响吗?

转载 作者:数据小太阳 更新时间:2023-10-29 07:34:40 25 4
gpt4 key购买 nike

考虑以下 ruby​​ 代码,假设我从某处调用了 prestart:

def tester(process_name, *host_list)
hosts = []
hosts = host_list[0]
hosts[0] = nil
end

def prestart(process_name, *host)
host_list = ['192.168.1.1', '192.168.1.2']
puts host_list.inspect # -> ['192.168.1.1', '192.168.1.2']
tester(process_name, host_list)
puts host_list.inspect # -> [nil, '192.168.1.2']
abort
end

怎么变成nil了?这是 ruby 的工作原理吗?如果是,我如何确保它不会影响来电者?

最佳答案

数组是对象,因此通过引用过去。如果你想改变它而不影响原来的,你需要通过调用 .dup 来复制它。您可以在调用方或被调用方法中执行此操作。

关于ruby 可选参数,如果更改,对调用者有影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10314342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com