Ein ternärer bedingter Ausdruck ist eine kürzere Schreibweise für einfache if/else-Anweisungen.
Enthält eine if/else-Anweisung nur zwei Zweige, einen für den Fall, dass die Bedingung wahr ist, und einen für den Fall, dass sie falsch ist, kannst du sie als ternären bedingten Ausdruck neu schreiben.
Ternäre Ausdrücke kombinieren die Symbole ? und : und teilen damit eine Bedingung auf:
condition ? true_branch : false_branch
Der Code links vom ? ist die Bedingung, und der Code rechts enthält die beiden möglichen Zweige, getrennt durch das :.
Ist die Bedingung wahr, wird der Code auf der linken Seite des : ausgeführt.
Ist die Bedingung falsch, wird der Code auf der rechten Seite des : ausgeführt.
Zum Beispiel:
if traffic_light == 'green'
cross_the_road
else
wait
end
lässt sich auch so schreiben:
traffic_light == 'green' ? cross_the_road : wait
In dieser Übung erstellst du die Regeln für die Website eines Kinos.
Das Kino bietet einen Rabatt für „Altersrentner“. Wer 60 oder älter ist, zahlt 10,00 für eine Eintrittskarte. Wer jünger ist, zahlt die vollen 15,00.
Schreibe die Methode Moviegoer#ticket_price mit einem ternären Operator.
Moviegoer.new(21).ticket_price
#=> 15
Moviegoer.new(65).ticket_price
#=> 10
Das Kino hat ein vereinfachtes System zur Altersprüfung. Wenn du 18 oder älter bist, darfst du Horrorfilme sehen. Wenn du jünger bist, darfst du es nicht.
Implementiere die Methode Moviegoer#watch_scary_movie?.
Sie soll zurückgeben, ob jemand den Film sehen darf oder nicht.
Moviegoer.new(21).watch_scary_movie?
#=> true
Moviegoer.new(17).watch_scary_movie?
#=> false
Das Kino hat ein Movie-Club-Programm. Mitglieder bekommen kostenloses Popcorn, wenn sie sich einen Film ansehen.
Implementiere die Methode Moviegoer.claim_free_popcorn!.
Wenn ein Zuschauer Mitglied im Movie Club ist, soll er mit seinem kostenlosen Popcorn belohnt werden.
Wenn nicht, soll die Methode die Ausnahme UnsupportedOperation auslösen, die oben im Code definiert ist.
Moviegoer.new(21, member: true).claim_free_popcorn!
#=> 🍿
Moviegoer.new(17, member: false).claim_free_popcorn!
#=> Exception was raised! (NotMovieClubMemberError)
In dieser Übung wird von dir erwartet, dass du die Ausnahme UnsupportedOperation für einen bestimmten Gültigkeitsbereich definierst.
Melde dich bei Exercism an, um Ruby mit 21 Konzepte121 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.