允许方法接受数组

时间:2014-10-08 10:56:31

标签: ruby-on-rails ruby arrays

制作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'

不是游戏改变者,只是想知道是否可以做到:)

2 个答案:

答案 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'