Ternärer Operator
Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy — Lektion 40 von 56.
Der Ternary-Operator ist eine einzeilige Abkürzung für ein if/else, das einen Wert zurückgibt. Die Syntax lautet condition ? value_if_true : value_if_false.
age = 20
status = age >= 18 ? "Eligible" : "Not Eligible"
puts status # EligibleEs ist dasselbe wie zu schreiben:
status = if age >= 18
"Eligible"
else
"Not Eligible"
endVerwenden Sie den Ternary-Operator, wenn beide Zweige kurze Werte zurückgeben. Wenn einer der Zweige mehr als einen Ausdruck benötigt, greifen Sie auf ein echtes if/else zurück: Zu viel in einen Ternary-Operator zu packen, macht ihn schwer lesbar.
Sie können es direkt in anderen Ausdrücken verwenden, einschließlich Interpolation:
count = 1
puts "#{count} item#{count == 1 ? "" : "s"}" # 1 Element
count = 5
puts "#{count} item#{count == 1 ? "" : "s"}" # 5 ElementeAufgabe
EinfachLies eine Ganzzahl n von der Eingabe ein. Verwende den Ternär-Operator (keine if/else-Blöcke) und gib genau Folgendes aus:
<n> is <label>wobei label Folgendes ist:
positivewennn > 0negativewennn < 0zerowennn == 0
Hinweis: Verwende einen verschachtelten Ternär-Operator, condition ? a : (other_condition ? b : c).
Für die Eingabe 5 lautet die Ausgabe 5 is positive. Für 0 lautet sie 0 is zero.
Spickzettel
Der ternäre Operator ist eine einzeilige if/else-Abkürzung: condition ? value_if_true : value_if_false
age = 20
status = age >= 18 ? "Eligible" : "Not Eligible" # "Eligible"Ternäre Operatoren können verschachtelt und innerhalb von String-Interpolation verwendet werden:
count = 5
puts "#{count} item#{count == 1 ? "" : "s"}" # 5 items
# Verschachtelter ternärer Operator
n = 3
label = n > 0 ? "positive" : (n < 0 ? "negative" : "zero")Verwenden Sie den ternären Operator nur für kurze, einfache Verzweigungen — bevorzugen Sie if/else, wenn Verzweigungen mehrere Ausdrücke erfordern.
Probier es selbst
n = gets.to_i
# TODO: Einen ternären Ausdruck verwenden, um das Label zu erstellen, dann puts
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Programmfluss
1Strings im Detail
String-Methoden im ÜberblickString-InterpolationIterieren über StringsSplit und JoinRückblick – String Weaver4Blöcke, Procs & Lambdas
Was ist ein Block?do..end vs. geschweifte KlammernDas yield-SchlüsselwortBlock-ParameterProcs und LambdasZusammenfassung – Eigener Iterator7Hashes Teil 2
Hash.new mit StandardwertenIterieren über HashesVerschachtelte HashesZusammenführen und TransformierenRückblick – Häufigkeitszähler10Projekt - Studentenverwaltung
ProjektübersichtStudent hinzufügen5Enumerable-Kraftpaket
Select und RejectMap-VerkettungReduce / Injectcount, all?, any?, none?group_by und partitionsort_by, min_by, max_byZusammenfassung – Data Pipeline8Fortgeschrittene Entscheidungslogik
Case mit Klassen & RegexMulti-Value whenTernärer OperatorInline if / unlessRückblick – Noten-Klassifizierer