【发布时间】:2018-09-15 05:12:34
【问题描述】:
h = { "a" => 1, "b" => 2 }
有没有办法减少哈希并将键、值和索引作为块参数?
作为一个起点,我可以遍历一个哈希来获取键、值和索引:
h.each_with_index { |(k,v), i| puts [k,v,i].inspect }
# => ["a", 1, 0]
# => ["b", 2, 1]
但是,当我添加 reduce 时,我似乎失去了将键和值作为单独值的能力,而是将它们作为两个元素数组提供:
h.each_with_index.reduce([]) { |memo, (kv,i)| puts [kv,i].inspect }
# => [["a", 1], 0]
# => [["b", 2], 1]
没关系,我可以在街区里做kv[0] 和kv[1],但我想要这样的东西:
h.each_with_index.reduce([]) { |memo, (k,v), i| puts [k,v,i].inspect }
我想在没有猴子补丁的情况下这样做。
【问题讨论】:
-
您很幸运(到目前为止)收到了三个非常好的答案。我建议您研究@mudasobwa 的答案,以更深入地了解正在发生的事情。
标签: ruby