Opérateur ternaire
Fait partie de la section Logique et Flux du Journey Ruby de Coddy — leçon 40 sur 56.
L'opérateur ternaire est un raccourci sur une seule ligne pour une instruction if/else qui renvoie une valeur. La syntaxe est condition ? value_if_true : value_if_false.
age = 20
status = age >= 18 ? "Eligible" : "Not Eligible"
puts status # EligibleC'est la même chose que d'écrire :
status = if age >= 18
"Eligible"
else
"Not Eligible"
endUtilisez l'opérateur ternaire lorsque les deux branches retournent des valeurs courtes. Si l'une ou l'autre des branches nécessite plus d'une expression, revenez à un véritable if/else : en mettre trop dans un ternaire le rend difficile à lire.
Vous pouvez l'utiliser directement à l'intérieur d'autres expressions, y compris l'interpolation :
count = 1
puts "#{count} item#{count == 1 ? "" : "s"}" # 1 élément
count = 5
puts "#{count} item#{count == 1 ? "" : "s"}" # 5 élémentsDéfi
FacileLisez un entier n depuis l'entrée. En utilisant l'opérateur ternaire (pas de blocs if/else), affichez exactement :
<n> is <label>où label est :
positivequandn > 0negativequandn < 0zeroquandn == 0
Astuce : utilisez une ternaire imbriquée, condition ? a : (other_condition ? b : c).
Pour l'entrée 5, la sortie est 5 is positive. Pour 0, c'est 0 is zero.
Aide-mémoire
L'opérateur ternaire est un raccourci if/else sur une seule ligne : condition ? value_if_true : value_if_false
age = 20
status = age >= 18 ? "Eligible" : "Not Eligible" # "Eligible"Les ternaires peuvent être imbriqués et utilisés à l'intérieur d'une interpolation de chaîne :
count = 5
puts "#{count} item#{count == 1 ? "" : "s"}" # 5 items
# Ternaire imbriqué
n = 3
label = n > 0 ? "positive" : (n < 0 ? "negative" : "zero")Utilisez les ternaires uniquement pour des branches courtes et simples — privilégiez if/else lorsque les branches nécessitent plusieurs expressions.
Essayez vous-même
n = gets.to_i
# À FAIRE : utiliser une expression ternaire pour construire l'étiquette, puis puts
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 - 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 Pipeline8Prise de décision avancée
Case avec Classes & Regexwhen à valeurs multiplesOpérateur ternaireif / unless en ligneRécapitulatif - Classificateur de notes