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 Pipeline