如何创建没有明确参数数量的Ruby函数?
需要更多澄清吗?
使用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
使用*rest
.这是一个很好的小教程.
(如果我可以对接受的答案添加评论,我会,但我没有足够的分数.)
警告:对于处理常规数据的方法,请注意这样做.这是一个伟大的一块语法糖,但有限制的参数个数,你可以传递给方法你会得到一个SystemStackError之前.我已经达到了这个极限redis.mapped_mget *keys
.此外,限制将根据您使用splat运算符的位置而更改.例如,在本地运行pry,我可以将超过130,000个元素的数组打包到方法中.但是,在赛璐珞演员中运行,该限制可能少于16,000个元素.