1

可能重复:
* 运算符在 Ruby 中对这个字符串做了什么

在寻找将数组转换为哈希的简单方法时,我遇到了以下代码(类似于 .Net 在 IEnumerable 上的 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

4

1 回答 1

4

如果你想用谷歌搜索它,那就是 splat-operator。它确实将数组转换为列表(因此您可以将数组用作方法的参数)。它也做相反的事情:它可以将一个列表“啜”成一个数组。

require 'date'
*date_stuff = 2012,2,29 # slurp
p date_stuff #=> [2012, 2, 29]
Date.new(*date_stuff) # regurgitate
于 2012-02-28T22:14:40.030 回答