【发布时间】:2010-09-15 14:25:50
【问题描述】:
在 Ruby 中,我有类似于以下的代码
foo { |x, y| puts y }
因为编译器/解释器不断警告我有关未使用的 var X,我将 x 替换为 '*' 并且编译器停止抱怨。 (我不知道为什么我认为 * 是最好的选择……它就这样发生了……)
foo { |*, y| puts y }
这究竟是做什么的?有没有副作用?
【问题讨论】:
在 Ruby 中,我有类似于以下的代码
foo { |x, y| puts y }
因为编译器/解释器不断警告我有关未使用的 var X,我将 x 替换为 '*' 并且编译器停止抱怨。 (我不知道为什么我认为 * 是最好的选择……它就这样发生了……)
foo { |*, y| puts y }
这究竟是做什么的?有没有副作用?
【问题讨论】:
此上下文中的星号称为“splat”运算符。这意味着您可以在其位置传递多个参数,并且该块会将它们视为一个数组。
我不确定它是如何或为什么在没有变量名的情况下工作的(例如foo { |*x, y| puts y })。我猜这意味着该块忽略了除了最后一个参数之外的所有参数,它会打印出来。
【讨论】: