count, all?, any?, none?
Fait partie de la section Logique et Flux du Journey Ruby de Coddy. Leçon 24 sur 56.
Quatre petites méthodes Enumerable qui répondent à des questions sur une collection sans vous obliger à écrire une boucle.
count renvoie le nombre d’éléments qui satisfont le bloc :
[1, 2, 3, 4, 5].count { |n| n.even? } # 2
[1, 2, 3, 4, 5].count # 5 (pas de bloc, compte total)all? est vrai lorsque chaque élément satisfait le bloc :
[2, 4, 6].all? { |n| n.even? } # true
[2, 4, 7].all? { |n| n.even? } # falseany? vaut true lorsqu’au moins un élément satisfait la condition :
[1, 2, 3].any? { |n| n.even? } # true
[1, 3, 5].any? { |n| n.even? } # falsenone? est vrai lorsqu’aucun d’entre eux ne le fait :
[1, 3, 5].none? { |n| n.even? } # trueLes méthodes s’arrêtent prématurément : any? s’arrête à la première correspondance, all? s’arrête au premier échec. Elles sont peu coûteuses.
Défi
FacileLisez une liste de notes de test séparées par des virgules (entiers). Une classe est une classe valide lorsque :
none?des notes n’est négative (un test non enregistré)all?les notes sont au plus égales à100any?note est exactement égale à100(au moins une note parfaite)- au moins 3 notes sont
>= 70(utilisezcount)
Affichez exactement une ligne :
Valid: <count> passinglorsque les quatre conditions sont remplies (countest le nombre de notes>= 70)Invaliddans le cas contraire
Pour l’entrée 72,80,100,65,90 : 4 notes >= 70, aucune négative, toutes <= 100, l’une d’elles vaut 100, donc la sortie est Valid: 4 passing.
Pour 72,80,90 : 3 notes réussies, mais aucune note parfaite, donc Invalid.
Essayez vous-même
scores = gets.chomp.split(",").map(&:to_i)
# TODO: combiner all?, any?, none?, count pour décider Valid vs Invalid
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
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 - Tisseur de chaînes4Blocs, Procs et Lambdas
Qu'est-ce qu'un bloc ?do..end ou accoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes, 2e partie
Hash.new avec valeurs par défautParcourir les hashesHashes imbriquésFusionner et transformerRécapitulatif - Compteur de fréquences10Projet - Dossiers des étudiants
Présentation du projetAjouter un étudiant2Plages
Qu’est-ce qu’une plage ?Méthodes des plagesPlages dans Case / WhenRécapitulatif - Exercices sur les plages5Puissance des Enumerable
Select et RejectChaînage de MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Pipeline de donnéesEntraînez-vous par vous-même : Compilateur Ruby en ligne