在Ruby中,我的代码类似于以下
foo { |x, y| puts y }
因为编译器/解释器一直警告我未使用的var X,我用'*'替换x并且编译器停止抱怨。 (我不知道为什么我决定*是最好的选择......它刚刚发生......)
foo { |*, y| puts y }
这究竟是做什么的?有副作用吗?
答案 0 :(得分:4)
此上下文中的星号称为“splat”运算符。这意味着您可以在其位置传递多个参数,并且该块将它们视为一个数组。
我不确定它之后如何或为什么没有变量名称(例如foo { |*x, y| puts y }
)。我猜这意味着该块会忽略所有参数,除了它打印出的最后一个参数。