我希望a.each_with_object
与index
进行比此更好的方式:
a = %w[a b c]
a.each.with_index.each_with_object({}) { |arr, hash|
v,i = arr
puts "i is: #{i}, v is #{v}"
}
i is: 0, v is a
i is: 1, v is b
i is: 2, v is c
=> {}
有没有办法在没有v,i = arr
的情况下执行此操作?
答案 0 :(得分:43)
而不是
|arr, hash|
你可以做到
|(v, i), hash|
答案 1 :(得分:35)
在您的示例中.each.with_index
是多余的。我找到了这个解决方案:
['a', 'b', 'c'].each_with_object({}).with_index do |(el, acc), index|
acc[index] = el
end
# => {0=>"a", 1=>"b", 2=>"c"}
答案 2 :(得分:1)
您可以用
替换最后一行puts "i is: %d, v is %s" % arr.reverse
但是,正如@sawa建议的那样,消除数组参数的歧义就是要做的事情。我只是提到这个东西要存放一天。