(一元)* 运算符在此 Ruby 代码中起什么作用?

2024-05-04

给出 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(使用前将#替换为@)

(一元)* 运算符在此 Ruby 代码中起什么作用? 的相关文章

随机推荐