La sintassi dell’operatore ternario di Ruby

Ecco un rapido esempio di codice sorgente Ruby, che mostra come ho usato l’operatore ternario di Ruby in un metodo che stampa un record CSV per una classe che ho definito:

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

Come potete vedere da questo metodo, ogni linea usa l’operatore ternario per prendere la seguente decisione:

  1. Se la lunghezza del campo dato è uguale a 0, usa la prima istruzione printf.
  2. Altrimenti, usa la seconda istruzione printf.

Può non sembrare molto, ma è così. La cosa bella è che è molto più breve dell’equivalente sintassi if/then, ed è ancora molto facile da leggere.

Se vuoi maggiori informazioni sull’operatore ternario di Ruby, continua pure a leggere.

Sintassi generale dell’operatore ternario

Come puoi dedurre dall’esempio precedente, la sintassi generale dell’operatore ternario di Ruby è così:

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

Nel mio esempio precedente, il mio primo test-expression era così:

last_name.length==0

e il suo if-true-expression era così:

printf(",")

e il suo if-false-expression era così:

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

Spero che la dimostrazione della sintassi generale dell’operatore ternario abbia aiutato a rendere il mio codice precedente un po’ più comprensibile.

Un secondo esempio

Se volete un altro esempio dell’operatore ternario, eccone uno che usa un test di confronto numerico, seguito da due possibili istruzioni puts, una che sarà eseguita se il test è vero e un’altra che sarà eseguita se il test è falso:

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

Come potete immaginare, questo segmento di codice stamperà:

I can't drive 55!

(che riassume anche le mie abitudini di guida.)

L’operatore ternario è forte. Può accorciare le vostre if/then dichiarazioni, e mantenere il vostro codice Ruby leggibile.