Rubyn ternäärioperaattorin syntaksi

Tässä on nopea esimerkki Rubyn lähdekoodista, joka osoittaa, miten käytin Rubyn ternäärioperaattoria metodissa, joka tulostaa CSV-tietueen määrittelemälleni luokalle:

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

Kuten tuosta metodista näkyy, jokainen rivi käyttää ternäärioperaattoria seuraavan päätöksen tekemiseen:

  1. Jos annetun kentän pituus on 0, käytä ensimmäistä printf-lausetta.
  2. Muussa tapauksessa käytä toista printf-lauseketta.

Ei ehkä tunnu paljolta, mutta siitä on kyse. Hienoa on, että se on paljon lyhyempi kuin vastaava if/then-syntaksi, ja se on silti hyvin helppolukuinen.

Jos haluat hieman lisää tietoa Rubyn ternäärisestä operaattorista, lue rohkeasti eteenpäin.

Ternäärioperaattorin yleinen syntaksi

Kuten edellisestä esimerkistä voit päätellä, Rubyn ternäärioperaattorin yleinen syntaksi näyttää tältä:

test-expression ? if-true-expression : if-false-expression

Edellisessä esimerkissäni ensimmäinen test-expression näytti tältä:

last_name.length==0

ja sen if-true-expression näytti tältä:

printf(",")

ja sen if-false-expression näytti tältä:

printf("\"%s\",", last_name)

Toivottavasti ternaario-operaattorin yleisen syntaksin havainnollistaminen auttoi tekemään aiemmasta koodistani hieman ymmärrettävämpää.

Toinen esimerkki

Jos haluat vielä yhden esimerkin ternäärisestä operaattorista, tässä on yksi esimerkki, jossa käytetään numeerista testivertailua ja sen jälkeen kahta mahdollista puts lauseketta, joista toinen suoritetaan, jos testin tulokseksi tulee true, ja toinen, jos testin tulokseksi tulee false:

# set the speedspeed = 90# somewhere later in the program ...speed > 55 ? puts("I can't drive 55!") : puts("I'm a careful driver")

Kuten arvata saattaa, tämä koodinpätkä tulostaa:

I can't drive 55!

(Joka myös tiivistää ajotapani.)

Ternäärioperaattori on siisti. Se voi lyhentää if/then -lauseita ja pitää silti Ruby-koodisi luettavana.