给出 Ruby 代码
line = "first_name=mickey;last_name=mouse;country=usa"
record = Hash[*line.split(/=|;/)]
我理解第二行中的所有内容,除了*
操作员 - 它在做什么以及相关文档在哪里? (正如您可能猜到的那样,搜索此案例非常困难......)
The *
is the splat操作员。
它扩展了一个Array
到参数列表中,在本例中是参数列表Hash.[]
方法。 (更准确地说,它扩展了任何响应的对象to_ary
/to_a
, or to_a
在 Ruby 1.9 中。)
为了说明这一点,以下两个语句是相等的:
method arg1, arg2, arg3
method *[arg1, arg2, arg3]
它还可以在不同的上下文中使用,以捕获方法定义中的所有剩余方法参数。在这种情况下,它不会扩展,而是组合:
def method2(*args) # args will hold Array of all arguments
end
这里有一些更详细的信息 https://content.pivotal.io/blog/ruby-pearls-vol-1-the-splat.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)