制作DSL,我只是想知道是否有办法让方法接受数组而不将数组放在方括号中。
例如,这有效:
def foo args=[]
args.each { |arg| puts arg }
end
foo ['baz','boo','bing'] #=> 'baz','boo','bing'
但是我希望能够在不使用方括号的情况下将其参数设为foo:
foo 'baz','boo','bing' #=> 'baz','boo','bing'
不是游戏改变者,只是想知道是否可以做到:)
答案 0 :(得分:6)
是的!它叫做“splat”运算符。它将把剩下的东西带到数组中。
def foo(*args)
args.each { |arg| puts arg }
end
> foo 'baz','boo','bing'
baz
boo
bing
答案 1 :(得分:2)
你可以使用splat运算符
这样做def foo *args
args.each { |arg| puts arg }
end
foo 'baz','boo','bing' #=> 'baz','boo','bing'