*(星级)在Ruby中意味着什么?
可能重复:
什么是*运算符在Ruby中对此字符串执行的操作
可能在其他地方有答案,但我只是不知道如何找到它…
如果我是对的, *
表示在函数定义中使用的多个参数:
def hero(name, *super_powers)
但是*
在代码中做了什么:
Hash[*[[:first_name, 'Shane'], [:last_name, 'Harvie']].flatten] # => {:first_name=>"Shane", :last_name=>"Harvie"}
可变长度参数列表,星号运算符
方法的最后一个参数可以在前面加上星号(*),有时也称为“splat”运算符。 这表示可以将更多参数传递给函数。 收集这些参数并创建一个数组。
星号运算符也可以在方法调用中的Array参数之前。 在这种情况下,将展开数组并传入值,就好像它们用逗号分隔一样。