具有无限数量参数的Ruby函数

Dev*_*ted 19 ruby variadic-functions

如何创建没有明确参数数量的Ruby函数?

需要更多澄清吗?

ram*_*ion 25

使用splat运算符 *

def foo(a,b,c,*others)
   # this function has at least three arguments,
   # but might have more
   puts a
   puts b
   puts c
   puts others.join(',')
end
foo(1,2,3,4,5,6,7,8,9)
# prints:
# 1
# 2
# 3
# 4,5,6,7,8,9
Run Code Online (Sandbox Code Playgroud)


Cha*_*tin 19

使用*rest.这是一个很好的小教程.


sco*_*gle 6

(如果我可以对接受的答案添加评论,我会,但我没有足够的分数.)

警告:对于处理常规数据的方法,请注意这样做.这是一个伟大的一块语法糖,但限制的参数个数,你可以传递给方法你会得到一个SystemStackError之前.我已经达到了这个极限redis.mapped_mget *keys.此外,限制将根据您使用splat运算符的位置而更改.例如,在本地运行pry,我可以将超过130,000个元素的数组打包到方法中.但是,在赛璐珞演员中运行,该限制可能少于16,000个元素.