块参数列表中的星号

时间:2010-09-15 14:25:51

标签: ruby lambda block

在Ruby中,我的代码类似于以下

foo { |x, y| puts y }

因为编译器/解释器一直警告我未使用的var X,我用'*'替换x并且编译器停止抱怨。 (我不知道为什么我决定*是最好的选择......它刚刚发生......)

foo { |*, y| puts y }

这究竟是做什么的?有副作用吗?

1 个答案:

答案 0 :(得分:4)

此上下文中的星号称为“splat”运算符。这意味着您可以在其位置传递多个参数,并且该块将它们视为一个数组。

我不确定它之后如何或为什么没有变量名称(例如foo { |*x, y| puts y })。我猜这意味着该块会忽略所有参数,除了它打印出的最后一个参数。