我試圖在不使用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'超級方便!謝謝! –