Poniżej znajduje się krótki przykład kodu źródłowego Rubiego, pokazujący jak użyłem operatora trójskładnikowego w metodzie, która wypisuje rekord CSV dla zdefiniowanej przeze mnie klasy:
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
Jak widać z tej metody, każda linia używa operatora trójskładnikowego do podjęcia następującej decyzji:
- Jeśli długość danego pola jest równa 0, użyj pierwszej
printf
instrukcji. - W przeciwnym razie użyj drugiej instrukcji
printf
.
Może się wydawać, że to niewiele, ale tak jest. Fajne jest to, że jest to o wiele krótsze niż odpowiednik if
/then
i nadal jest bardzo łatwe do przeczytania.
Jeśli chciałbyś uzyskać więcej informacji na temat operatora trójskładnikowego w Ruby, czytaj dalej.
Ogólna składnia operatora trójskładnikowego
Jak możesz wywnioskować z poprzedniego przykładu, ogólna składnia operatora trójskładnikowego w Ruby wygląda następująco:
test-expression ? if-true-expression : if-false-expression
W moim poprzednim przykładzie, mój pierwszy test-expression
wyglądał tak:
last_name.length==0
a jego if-true-expression
wyglądał tak:
printf(",")
a jego if-false-expression
wyglądał tak:
printf("\"%s\",", last_name)
Mam nadzieję, że zademonstrowanie ogólnej składni operatora trójskładnikowego pomogło uczynić mój wcześniejszy kod nieco bardziej zrozumiałym.
Drugi przykład
Jeśli chciałbyś jeszcze jeden przykład operatora trójskładnikowego, oto jeden, który używa liczbowego porównania testowego, po którym następują dwie możliwe puts
instrukcje, jedna, która zostanie wykonana, jeśli test osiągnie wartość true, i druga, która zostanie wykonana, jeśli test osiągnie wartość false:
# set the speedspeed = 90# somewhere later in the program ...speed > 55 ? puts("I can't drive 55!") : puts("I'm a careful driver")
Jak można się domyślić, ten segment kodu wydrukuje:
I can't drive 55!
(Co również podsumowuje moje nawyki prowadzenia samochodu.)
Operator trójskładnikowy jest fajny. Może skrócić twoje if
/then
instrukcje i nadal utrzymuje czytelność twojego kodu Ruby.