问题描述
是 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(/=|;/)]
除了 *
操作员之外,我了解第二行中的所有内容 - 它在做什么以及文档在哪里?(正如您可能猜到的那样,寻找这个案例很困难......)