*(star)在Ruby中意味着什么?

Ern*_*est 22 ruby splat

可能重复:
*运算符在Ruby中对此字符串执行的操作是什么

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

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

def hero(name, *super_powers)
Run Code Online (Sandbox Code Playgroud)

但是*在代码中做了什么呢:

Hash[*[[:first_name, 'Shane'], [:last_name, 'Harvie']].flatten] # => {:first_name=>"Shane", :last_name=>"Harvie"}
Run Code Online (Sandbox Code Playgroud)

osg*_*sgx 48

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

方法的最后一个参数可以在前面加一个星号(*),有时也称为"splat"运算符.这表示可以将更多参数传递给函数.收集这些参数并创建数组.

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

  • 不是完整的解释.它被称为splat运算符http://theplana.wordpress.com/2007/03/03/ruby-idioms-the-splat-operator/ (3认同)
  • 也称为可变参数函数 (2认同)