Syntaxen för den ternära operatorn i Ruby

Här är ett snabbt exempel på Ruby-källkod som visar hur jag använde Rubys ternära operator i en metod som skriver ut en CSV-post för en klass som jag definierade:

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

Som du kan se i metoden använder varje rad den ternära operatören för att fatta följande beslut:

  1. Om längden på det givna fältet är lika med 0, använd det första printf-satsen.
  2. I annat fall använder du det andra printf-kommandot.

Det kanske inte verkar så mycket, men det är det. Det häftiga är att det är mycket kortare än motsvarande if/then syntax, och det är fortfarande väldigt lättläst.

Om du vill ha lite mer information om den ternära operatorn i Ruby kan du gärna läsa vidare.

Allmän syntax för den ternära operatören

Som du kan utläsa av det föregående exemplet ser den allmänna syntaxen för Rubys ternära operatör ut så här:

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

I mitt föregående exempel såg min första test-expression ut så här:

last_name.length==0

och dess if-true-expression såg ut så här:

printf(",")

och dess if-false-expression såg ut så här:

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

Förhoppningsvis hjälpte demonstrationen av den allmänna syntaxen för den ternära operatorn till att göra min tidigare kod lite mer begriplig.

Ett andra exempel

Om du vill ha ytterligare ett exempel på den ternära operatören, så kommer här ett som använder en numerisk testjämförelse, följt av två möjliga puts-anvisningar, en som kommer att exekveras om testet utvärderas till sant, och en annan som kommer att exekveras om testet utvärderas till falskt:

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

Som du kanske kan gissa kommer detta kodsegment att skriva ut:

I can't drive 55!

(Vilket också sammanfattar mina körvanor.)

Den ternära operatören är cool. Den kan förkorta dina if/then-uttalanden och ändå hålla din Ruby-kod läsbar.