11
votes

Inverser énorme en rubis

.

Je suis en train d'inverser Enumerable (comme Array) sans utiliser inverse code>, mais en utilisant reverse_each code> iterator

J'espérais, ce code suivant suffit: p>

[1,2,3].reverse_each {|v| p v }


0 commentaires

3 Réponses :


24
votes

de 1.8.7, énumérable # chacun _ * méthodes Renvoie un énumérateur lorsque aucun bloc n'est fourni, les méthodes d'impératif à l'origine peuvent maintenant être utilisées dans des expressions pures.

Donc, si vous souhaitez collecter des articles, utilisez < Code> Enumérable # map sur cet énumérateur: xxx


0 commentaires

-1
votes

Une autre méthode serait [1, 2, 3] .Reverse_each.to_a


0 commentaires

-1
votes

(1..3) .Reverse_each {| V | p v}

produit:

1 2 3

Il construit un tableau temporaire et traverse cette matrice dans l'ordre inverse, mais ne renvoie pas la copie inverse de la collection transformée

Si aucun bloc n'est donné, un énumérateur est renvoyé à la place.

mais Méthode de la carte de Ruby

retourne un nouveau tableau avec les résultats du bloc d'exécution une fois pour chaque élément de Enum.

p [1,2,3] .Reverse_each.map {| V | v}

inverse_each - agira comme un itérateur

carte - formera un nouvel ensemble de collection


0 commentaires