Ich versuche, Enumerable (wie Array) umzukehren, ohne die reverse
-Methode zu verwenden, sondern reverse_each
iterator.
Ich hoffte, dass folgender Code genügt:
%Vor%jedoch gibt der Block das Array nicht in umgekehrter Reihenfolge zurück. Natürlich könnte ich schreiben
%Vor%aber ich möchte Gegenstände auf die erste Art sammeln. Was ist die Quelle, wenn dieses Verhalten und wie soll ich meinen Ausdruck schreiben, um die Anforderung zu erfüllen?
Ab 1.8.7, Enumerable#each_*
Methoden gibt einen Enumerator
Wenn Sie also Elemente sammeln möchten, verwenden Sie Enumerable#map
für diesen Enumerator:
(1..3) .reverse_each {| v | pv}
erzeugt:
1 2 3
Er Erstellt ein temporäres Array und durchläuft dieses Array in umgekehrter Reihenfolge, gibt jedoch nicht die umgekehrte Kopie der transformierten Sammlung zurück
Wenn kein Block angegeben ist, wird stattdessen ein Enumerator zurückgegeben.
Aber Kartenmethode von Ruby
Gibt für jedes Element in enum ein neues Array mit den Ergebnissen von running block zurück.
p [1,2,3] .reverse_each.map {| v | v}
reverse_each - fungiert als Iterator
map - wird eine neue Kollektion bilden
Tags und Links ruby enumerable