gpt4 book ai didi

ruby - 如何在可变参数列表的末尾传递散列?

转载 作者:太空宇宙 更新时间:2023-11-03 16:33:09 27 4
gpt4 key购买 nike

我有一个函数,它接受一个带有可选散列的可变参数,该散列可以作为最后一项传递:

def func(*args)
options = args.last.is_a?(Hash) ? args.pop : {}
items = args

end

如果我有一个数组并且还想传递一个散列,我该如何调用这个函数?

x = [ "one", "two", "three" ]
....
func(*x, :on => "yes") # doesn't work, i get SyntaxError

语法错误信息是:

syntax error, unexpected tSYMBEG, expecting tAMPER
fun(*x, :on => "yes")

我正在运行 ruby​​ v1.8.7。

最佳答案

在第一个 arg 之前不带 * 调用它。

def func(*args)
options = args.last.is_a?(Hash) ? args.pop : {}
items = args

puts "Options: On: #{options[:on]}, Off: #{options[:off]}\n" if options.length > 0
p args
end

func(x, 123, 'a string', {:on => "yes", :off => "no"})

# Prints:
Options: On: yes, Off: no
[["one", "two", "three"], 123, "a string"]

关于ruby - 如何在可变参数列表的末尾传递散列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12326692/

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