【问题标题】:What does the * (star) mean in Ruby? [duplicate]Ruby 中的 *(星号)是什么意思? [复制]
【发布时间】:2011-05-09 08:59:57
【问题描述】:

可能重复:
What is the * operator doing to this string in Ruby

可能在其他地方有答案,但我只是不知道如何找到它......

如果我是对的,* 表示如果在函数定义中使用多个参数:

def hero(name, *super_powers)

但是* 在这样的代码中做了什么:

Hash[*[[:first_name, 'Shane'], [:last_name, 'Harvie']].flatten] # => {:first_name=>"Shane", :last_name=>"Harvie"}

【问题讨论】:

标签: ruby splat


【解决方案1】:

可变长度参数列表,星号运算符

方法的最后一个参数前面可能有一个星号 (*),有时称为“splat”运算符。这表明可以将更多参数传递给函数。收集这些参数并创建一个数组。

星号运算符也可以在方法调用中的数组参数之前。在这种情况下,数组将被展开,传入的值就像用逗号分隔一样。

【讨论】:

  • 也称为可变参数函数
  • 不是一个完整的解释。它被称为 splat 运算符theplana.wordpress.com/2007/03/03/…
  • 看起来当它后跟一个 &block 时,它不一定是方法的最后一个参数。我在 rails route mapping 的资源功能中遇到了这个问题。我是 ruby​​ 新手,也许这更多是因为 &block 参数是一种特殊情况。
猜你喜欢
  • 2016-12-15
  • 2010-09-28
  • 2014-12-06
  • 2018-11-21
  • 2018-01-24
  • 2011-04-18
  • 2011-01-17
  • 2011-07-27
相关资源
最近更新 更多