微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决一元* 运算符在这段 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(/=|;/)]

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。