一元* 运算符在这段 Ruby 代码中做了什么?

问题描述

splat*运算符。 __

它将 an 扩展Array为参数列表,在本例中是Hash.[]方法的参数列表。(更准确地说,它扩展了任何响应to_ary/的对象to_a,或者to_a在 Ruby 1.9 中。)

为了说明,以下两个语句是相等的:

method arg1, arg2, arg3
method *[arg1, arg2, arg3]

它也可以在不同的上下文中使用,以捕获方法定义中所有剩余的方法参数。在这种情况下,它不会扩展,而是结合:

def method2(*args)  # args will hold Array of all arguments
end

这里有一些更详细的信息

解决方法

给定 Ruby 代码

line = "first_name=mickey;last_name=mouse;country=usa" 
record = Hash[*line.split(/=|;/)]

除了 *操作员之外,我了解第二行中的所有内容 - 它在做什么以及文档在哪里?(正如您可能猜到的那样,寻找这个案例很困难......)