【问题标题】:Asterisk in Block Parameters List块参数列表中的星号
【发布时间】:2010-09-15 14:25:50
【问题描述】:

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

foo { |x, y| puts y }

因为编译器/解释器不断警告我有关未使用的 var X,我将 x 替换为 '*' 并且编译器停止抱怨。 (我不知道为什么我认为 * 是最好的选择……它就这样发生了……)

foo { |*, y| puts y }

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

【问题讨论】:

    标签: ruby lambda block


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-12-28
      • 2021-09-21
      相关资源
      最近更新 更多