Ruby的一元*运算符

Ruby的一元*运算符,ruby,splat,Ruby,Splat,可能重复: 我在寻找一种简单的方法将数组转换为类似于.Net在IEnumerable上的ToDictionary方法的散列时,遇到了以下代码。。。我希望能够任意设置键和值 a = [ 1, 2, 3, 4, 5, 6 ] h = Hash[ *a.collect { |v| [ v, v ] }.flatten ] 我的问题是,a.collect前面的星号是做什么的 顺便说一句,代码来自如果你想用谷歌搜索它,它是splat操作符。它将数组转换为列表,这样您就可以使用数组作为方法的参数。它也可

可能重复:

我在寻找一种简单的方法将数组转换为类似于.Net在IEnumerable上的ToDictionary方法的散列时,遇到了以下代码。。。我希望能够任意设置键和值

a = [ 1, 2, 3, 4, 5, 6 ]
h = Hash[ *a.collect { |v| [ v, v ] }.flatten ]
我的问题是,a.collect前面的星号是做什么的


顺便说一句,代码来自

如果你想用谷歌搜索它,它是splat操作符。它将数组转换为列表,这样您就可以使用数组作为方法的参数。它也可以做相反的事情:它可以将列表“slurp”到数组中

require 'date'
*date_stuff = 2012,2,29 # slurp
p date_stuff #=> [2012, 2, 29]
Date.new(*date_stuff) # regurgitate

如果你想用谷歌搜索的话,它就是splat操作员。它将数组转换为列表,这样您就可以使用数组作为方法的参数。它也可以做相反的事情:它可以将列表“slurp”到数组中

require 'date'
*date_stuff = 2012,2,29 # slurp
p date_stuff #=> [2012, 2, 29]
Date.new(*date_stuff) # regurgitate

啊,还没找到那个。星号很难搜索,因为谷歌会将其从搜索中过滤掉。现在你知道它叫“splat”。:-谢谢你的帮助@JoshLee。符号猎犬搜索引擎专门搜索符号:谢谢@sarnold,我以前从未听说过符号猎犬。我以后会记得的。啊,还没找到那个。星号很难搜索,因为谷歌会将其从搜索中过滤掉。现在你知道它叫“splat”。:-谢谢你的帮助@JoshLee。符号猎犬搜索引擎专门搜索符号:谢谢@sarnold,我以前从未听说过符号猎犬。我以后一定要记住它。谢谢你关于相反行为的额外信息。a,b=*[:1,:2]在一般编程中不是叫做元组吗?@fanoy-我对一般编程中的元组一无所知。你的代码有效;它甚至可以在没有splat的情况下工作,这有点奇怪;Ruby允许您在定义数组时省略括号。你可能想要像first,*middle,last=1,2,3,4,5;p middle=>[2,3,4]谢谢你提供了关于相反行为的额外信息。a,b=*[:1,:2]在一般编程中不是叫做元组吗?@fanoy-我对一般编程中的元组一无所知。你的代码有效;它甚至可以在没有splat的情况下工作,这有点奇怪;Ruby允许您在定义数组时省略括号。你可能想要像first,*middle,last=1,2,3,4,5;p中间=>[2,3,4]