使用Enumerable#each_with_index
:
Hash[array.each_with_index.map { |value, index| [index, value] }]
# => {0=>"Adult", 1=>"Family", 2=>"Single", 3=>"Child"}
由於@hirolau評論,each_with_index.map
也可以寫爲map.with_index
。
Hash[array.map.with_index { |value, index| [index, value] }]
# => {0=>"Adult", 1=>"Family", 2=>"Single", 3=>"Child"}
UPDATE
Alterantive使用Hash#invert
:
Hash[array.map.with_index{|*x|x}].invert
# => {0=>"Adult", 1=>"Family", 2=>"Single", 3=>"Child"}
Hash[[*array.map.with_index]].invert
# => {0=>"Adult", 1=>"Family", 2=>"Single", 3=>"Child"}
真棒,這就行了。謝謝你的提示。 – Luigi
each_with_index.map也可以寫成map.with_index,只是更好。 – hirolau
Hash [array.map.with_index {| * x | x}]。invert – hirolau