Answers:
该*
是图示操作。
它将扩展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
a,b,*c = d,e,f,*g
设置a = d,b = e和c = [f,g0,g1,g2,...,gn],其中g = [g0,g1,g2,...,gn]