星号块参数列表

问题描述:

在Ruby中,我有类似以下星号块参数列表

foo { |x, y| puts y } 

代码,因为编译器/解释器不断警告我网站未使用VAR X,我换成X用“*”和编译器停止抱怨。 (我不知道为什么我决定*是最好的选择......只是发生了......)

foo { |*, y| puts y } 

这是干什么的?有没有副作用?

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

虽然(例如foo { |*x, y| puts y }),但我不确定它如何或为什么在它后面没有变量名称的情况下工作。我猜想这意味着该块将忽略除最后一个参数外的所有参数,并将其打印出来。