转换此数组:
a = ["item 1", "item 2", "item 3", "item 4"]
...到散列:
{ "item 1" => "item 2", "item 3" => "item 4" }
i、 e.even个索引的元素为keys,odd个索引的元素为values.
转换此数组:
a = ["item 1", "item 2", "item 3", "item 4"]
...到散列:
{ "item 1" => "item 2", "item 3" => "item 4" }
i、 e.even个索引的元素为keys,odd个索引的元素为values.
a = ["item 1", "item 2", "item 3", "item 4"]
h = Hash[*a] # => { "item 1" => "item 2", "item 3" => "item 4" }
就这样.*
被称为splat操作符.
每个@Mike Lewis(在 comments 中)都有一个警告:"要非常小心.Ruby会在堆栈上扩展splats.如果你在一个 Big Data 集上这样做,那么你的堆栈可能会爆炸."
因此,对于大多数通用用例,这种方法非常好,但是如果你想对大量数据进行转换,可以使用不同的方法.例如,@Łukasz Niemier(也在 comments 中)为大型数据集提供了这种方法:
h = Hash[a.each_slice(2).to_a]