Récapitulatif - Itérateur personnalisé
Fait partie de la section Logique et Flux du Journey Ruby de Coddy. Leçon 20 sur 56.
Créez votre propre méthode d'itérateur qui utilise yield, accepte un bloc et retourne une valeur utile, en combinant tout ce qui a été vu dans ce chapitre.
Défi
MoyenDéfinissez une méthode nommée each_even qui prend un tableau numbers et transmet (yield) chaque nombre pair du tableau à son bloc (en ignorant complètement les nombres impairs).
Ensuite, lisez une liste d'entiers séparés par des virgules, appelez each_even sur celle-ci avec un bloc qui affiche "Even: <n>" pour chaque valeur transmise, et enfin affichez :
Done: <count>Où count est le nombre de nombres pairs qui ont été transmis.
Pour l'entrée 1,2,3,4,5,6, la sortie est :
Even: 2
Even: 4
Even: 6
Done: 3Essayez vous-même
# TODO: définir each_even(numbers) qui produit chaque nombre pair
numbers = gets.chomp.split(",").map(&:to_i)
count = 0
# TODO: appeler each_even avec un bloc qui affiche "Even: <n>"
# et incrémente count pour chaque valeur produite
puts "Done: #{count}"
Toutes les leçons de Logique et Flux
1Les chaînes de caractères en profondeur
Aperçu des méthodes de chaînesInterpolation de chaînesParcourir les chaînesSplit et JoinRécapitulatif - String Weaver4Blocs, Procs & Lambdas
Qu'est-ce qu'un bloc ?do..end vs AccoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes - Partie 2
Hash.new avec des valeurs par défautItérer sur les HashesHashes imbriquésFusion et transformationRécapitulatif - Compteur de fréquence10Projet - Dossiers étudiants
Présentation du projetAjouter un étudiant2Intervalles
Qu'est-ce qu'un intervalle ?Méthodes d'intervalleLes intervalles dans Case / WhenRécapitulatif - Pratique des intervalles5La puissance d'Enumerable
Select et RejectChaîner MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Data PipelineEntraînez-vous par vous-même : Compilateur Ruby en ligne