Ruby-syntaksen for ternære operatorer

Her er et hurtigt eksempel på noget Ruby-kildekode, der viser, hvordan jeg har brugt Rubys ternære operator i en metode, der udskriver en CSV-optegnelse for en klasse, jeg har defineret:

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 af denne metode, bruger hver linje den ternære operatør til at træffe følgende beslutning:

  1. Hvis længden af det givne felt er lig med 0, skal du bruge den første printf-anvisning.
  2. I modsat fald skal du bruge den anden printf-anvisning.

Det ser måske ikke ud af meget, men det er det. Det fede er, at det er meget kortere end den tilsvarende if/then-syntaks, og det er stadig meget let at læse.

Hvis du gerne vil have lidt flere oplysninger om Ruby-operatoren ternary operator, er du velkommen til at læse videre.

Generel syntaks for den ternære operatør

Som du kan se af det forrige eksempel, ser den generelle syntaks for Rubys ternære operatør således ud:

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

I mit forrige eksempel så min første test-expression således ud:

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

I mit forrige eksempel så min første test-expression således ud:

last_name.length==0

og dens if-true-expression så således ud:

printf(",")

og dens if-false-expression så således ud:

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

Håbentlig hjalp det at demonstrere den generelle syntaks for den ternære operatør med at gøre min tidligere kode lidt mere forståelig.

Et andet eksempel

Hvis du gerne vil have endnu et eksempel på den ternære operatør, er her et eksempel, der bruger en numerisk test sammenligning, efterfulgt af to mulige puts-meddelelser, en, der vil blive udført, hvis testen evalueres til sand, og en anden, der vil blive udført, hvis testen evalueres til falsk:

# 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 måske kan gætte, vil dette kodesegment udskrive:

I can't drive 55!

(Hvilket også opsummerer mine kørevaner.)

Den ternære operatør er cool. Den kan forkorte dine if/then-angivelser, og den holder stadig din Ruby-kode læsbar.