Select et Reject
Fait partie de la section Logique et Flux du Journey Ruby de Coddy. Leçon 21 sur 56.
La méthode select renvoie un nouveau tableau contenant uniquement les éléments pour lesquels le bloc renvoie une valeur véridique. C'est la manière dont Ruby écrit « filtrer ».
numbers = [1, 2, 3, 4, 5, 6]
evens = numbers.select { |n| n.even? }
puts evens.inspect # [2, 4, 6]reject est l’opposé : il conserve tout pour lequel le bloc renvoie false :
odds = numbers.reject { |n| n.even? }
puts odds.inspect # [1, 3, 5]Les deux renvoient un nouveau tableau ; l’original reste inchangé.
Le bloc est simplement un prédicat : tout ce qui s’évalue en vrai ou faux convient :
words = ["hi", "hello", "hey", "yo"]
long = words.select { |w| w.length >= 3 }
puts long.inspect # ["hello", "hey"]Défi
DébutantLisez une liste d’entiers séparés par des virgules. Affichez deux lignes :
- Les nombres supérieurs à
10(utilisezselect), reliés par, - Les nombres non divisibles par
3(utilisezreject), reliés par,
Pour l’entrée 3,7,12,15,20, la sortie est :
12, 15, 20
7, 20Essayez vous-même
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: ligne 1, numbers > 10, joints avec ", "
# TODO: ligne 2, numbers NON divisibles par 3, joints avec ", "
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