我试图在不使用 reverse
方法的情况下反转 Enumerable(如 Array),而是使用 reverse_each
迭代器。
我希望,下面的代码就足够了:
p [1,2,3].reverse_each {|v| v }
然而,该 block 不会以相反的顺序返回数组。我当然可以写
[1,2,3].reverse_each {|v| p v }
但我想以第一种方式收集元素。这种行为的根源是什么?我应该如何编写表达式来满足要求?
最佳答案
从 1.8.7 开始,Enumerable#each_*
方法 return an enumerator当没有提供 block 时,那些原本命令式的方法现在可以在纯表达式中使用。
因此,如果您想收集项目,请在该枚举器上使用 Enumerable#map
:
reversed_values = [1, 2, 3].reverse_each.map { |x| 2*x }
#=> [6, 4, 2]
关于ruby - 在 Ruby 中反转可枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10854002/