Hier ein kurzes Beispiel für Ruby-Quellcode, das zeigt, wie ich den ternären Ruby-Operator in einer Methode verwendet habe, die einen CSV-Datensatz für eine von mir definierte Klasse ausgibt:
def print_csv_record last_name.length==0 ? printf(",") : printf("\"%s\",", last_name) first_name.length==0 ? printf(",") : printf("\"%s\",", first_name) city.length==0 ? printf(",") : printf("\"%s\"", city) printf("\n")end
Wie Sie aus dieser Methode ersehen können, verwendet jede Zeile den ternären Operator, um die folgende Entscheidung zu treffen:
- Wenn die Länge des angegebenen Feldes gleich 0 ist, verwenden Sie die erste
printf
-Anweisung. - Andernfalls verwenden Sie die zweite
printf
-Anweisung.
Das mag nicht viel erscheinen, aber das ist es. Das Tolle daran ist, dass es viel kürzer ist als die äquivalente if
/then
-Syntax, und es ist immer noch sehr einfach zu lesen.
Wenn Sie ein wenig mehr Informationen über den ternären Operator in Ruby haben möchten, lesen Sie einfach weiter.
Allgemeine Syntax des ternären Operators
Wie Sie dem vorherigen Beispiel entnehmen können, sieht die allgemeine Syntax des ternären Operators in Ruby wie folgt aus:
test-expression ? if-true-expression : if-false-expression
In meinem vorherigen Beispiel sah mein erstes test-expression
wie folgt aus:
last_name.length==0
und sein if-true-expression
sah so aus:
printf(",")
und sein if-false-expression
sah so aus:
printf("\"%s\",", last_name)
Hoffentlich hat die Demonstration der allgemeinen Syntax des ternären Operators dazu beigetragen, meinen früheren Code etwas verständlicher zu machen.
Ein zweites Beispiel
Wenn Sie ein weiteres Beispiel für den ternären Operator möchten, hier ist eines, das einen numerischen Testvergleich verwendet, gefolgt von zwei möglichen puts
Anweisungen, von denen eine ausgeführt wird, wenn der Test wahr ist, und eine andere, die ausgeführt wird, wenn der Test falsch ist:
# set the speedspeed = 90# somewhere later in the program ...speed > 55 ? puts("I can't drive 55!") : puts("I'm a careful driver")
Wie Sie sich vielleicht denken können, wird dieses Codesegment gedruckt:
I can't drive 55!
(Was auch meine Fahrgewohnheiten zusammenfasst.)
Der ternäre Operator ist cool. Er kann deine if
/then
-Anweisungen verkürzen und hält deinen Ruby-Code trotzdem lesbar.