31

可能重复:
* 运算符在 Ruby 中对这个字符串做了什么

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

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

def hero(name, *super_powers)

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

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

1 回答 1

64

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

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

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

于 2010-11-12T23:56:41.443 回答