A Ruby terner operátor szintaxisa

Itt egy gyors példa néhány Ruby forráskódra, amely megmutatja, hogyan használtam a Ruby terner operátorát egy olyan metódusban, amely kiír egy CSV rekordot egy általam definiált osztályhoz:

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

Amint ebből a módszerből látható, minden sor a terner operátort használja a következő döntés meghozatalára:

  1. Ha az adott mező hossza 0, használjuk az első printf utasítást.
  2. Máskülönben használjuk a második printf utasítást.

Ez talán nem tűnik soknak, de ez az. A király dolog az, hogy sokkal rövidebb, mint az ezzel egyenértékű if/then szintaxis, és még mindig nagyon könnyen olvasható.

Ha szeretnél még egy kicsit többet megtudni a Ruby terner operátoráról, olvass tovább.

A terner operátor általános szintaxisa

Amint az előző példából kiderülhet, a Ruby terner operátorának általános szintaxisa így néz ki:

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

Az előző példámban az első test-expression így nézett ki:

last_name.length==0

és a hozzá tartozó if-true-expression így nézett ki:

printf(",")

és a hozzá tartozó if-false-expression így nézett ki:

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

Remélhetőleg a terner operátor általános szintaxisának bemutatása segített egy kicsit érthetőbbé tenni a korábbi kódomat.

Egy második példa

Ha szeretnél még egy példát a terner operátorra, itt van egy, amely egy numerikus teszt összehasonlítást használ, amelyet két lehetséges puts utasítás követ, egy olyan, amely akkor fog végrehajtódni, ha a teszt igazra értékelődik, és egy másik, amely akkor fog végrehajtódni, ha a teszt hamisra értékelődik:

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

Amint sejthetitek, ez a kódrészlet kiírja:

I can't drive 55!

(Ami egyben összefoglalja a vezetési szokásaimat is.)

A terner operátor király. Lerövidítheti a if/then utasításokat, és még mindig olvasható marad a Ruby kódod.