我试图在不使用reverse
方法的情况下反转Enumerable(如Array),但使用reverse_each
迭代器。Ruby中的可逆枚举
我希望,那下面的代码就足够了:
p [1,2,3].reverse_each {|v| v }
然而块不返回逆转orded阵列。当然我可以写
[1,2,3].reverse_each {|v| p v }
但我想以第一种方式收集物品。如果这种行为是什么来源,我应该如何写出我的表达来满足要求?
我试图在不使用reverse
方法的情况下反转Enumerable(如Array),但使用reverse_each
迭代器。Ruby中的可逆枚举
我希望,那下面的代码就足够了:
p [1,2,3].reverse_each {|v| v }
然而块不返回逆转orded阵列。当然我可以写
[1,2,3].reverse_each {|v| p v }
但我想以第一种方式收集物品。如果这种行为是什么来源,我应该如何写出我的表达来满足要求?
从1.8.7,Enumerable#each_*
方法return an enumerator当没有块提供。这很不错:现在许多原本势在必行的方法可以用作功能表达式。
所以,如果你想收集的物品,对枚举使用Enumerable#map
:
reversed_values = [1, 2, 3].reverse_each.map { |x| 2*x }
#=> [6, 4, 2]
(1..3).reverse_each {| V | PV}
生产:
它建立一个临时数组并穿过以相反的顺序数组,但不返回变换集合的反向复制
如果没有块被给出,而是返回一个枚举器。
但是红宝石的地图方法
返回与在枚举每一次元件运行块的结果的新的数组。
p [1,2,3] .reverse_each.map {| v | V}
reverse_each - 将作为一个迭代
地图 - 将形成一套新的集合
的'reverse_each'超级方便!谢谢! –