我在寻找一种简单的方法将数组转换为哈希时遇到了以下代码(类似于IEnumerable上的.Net的ToDictionary方法......我希望能够任意设置密钥和值)。
a = [ 1, 2, 3, 4, 5, 6 ]
h = Hash[ *a.collect { |v| [ v, v ] }.flatten ]
我的问题是,a.collect
之前的星号是做什么的?
顺便说一下,代码来自http://justatheory.com/computers/programming/ruby/array_to_hash_one_liner.html
答案 0 :(得分:4)
如果你想谷歌它,这是splat运营商。它确实将数组转换为列表(因此您可以使用数组作为方法的参数)。它也恰恰相反:它可以将一个列表“啜饮”成一个数组。
require 'date'
*date_stuff = 2012,2,29 # slurp
p date_stuff #=> [2012, 2, 29]
Date.new(*date_stuff) # regurgitate