Ruby数组之间的转换
示例
哈希可以自由地在数组之间来回转换。将键/值对的哈希转换为数组将产生一个包含嵌套数组的数组:
{ :a => 1, :b => 2 }.to_a # => [[:a, 1], [:b, 2]]
相反,可以从相同格式的数组创建哈希:
[[:x, 3], [:y, 4]].to_h # => { :x => 3, :y => 4 }
类似地,可以使用Hash[]和交替键和值的列表来初始化哈希:
Hash[:a, 1, :b, 2] # => { :a => 1, :b => 2 }
或者从每个具有两个值的数组的数组中:
Hash[ [[:x, 3], [:y, 4]] ] # => { :x => 3, :y => 4 }
可以使用以下方法将哈希转换回包含键和值的数组flatten():
{ :a => 1, :b => 2 }.flatten # => [:a, 1, :b, 2]
与数组之间的轻松转换允许Hash与许多Enumerable方法配合使用,例如collect和zip:
Hash[('a'..'z').collect{ |c| [c, c.upcase] }] # => { 'a' => 'A', 'b' => 'B', ... } people = ['Alice', 'Bob', 'Eve'] height = [5.7, 6.0, 4.9] Hash[people.zip(height)] # => { 'Alice' => 5.7, 'Bob' => '6.0', 'Eve' => 4.9 }