La syntaxe de l’opérateur ternaire de Ruby

Voici un exemple rapide de code source Ruby, montrant comment j’ai utilisé l’opérateur ternaire de Ruby dans une méthode qui imprime un enregistrement CSV pour une classe que j’ai définie :

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

Comme vous pouvez le voir dans cette méthode, chaque ligne utilise l’opérateur ternaire pour prendre la décision suivante :

  1. Si la longueur du champ donné est égale à 0, utilisez la première instruction printf.
  2. Sinon, utilisez la deuxième instruction printf.

Cela peut sembler peu, mais c’est tout. Ce qui est cool, c’est que c’est beaucoup plus court que la syntaxe équivalente if/then, et c’est toujours très facile à lire.

Si vous souhaitez un peu plus d’informations sur l’opérateur ternaire Ruby, n’hésitez pas à lire la suite.

Syntaxe générale de l’opérateur ternaire

Comme vous pouvez le comprendre dans l’exemple précédent, la syntaxe générale de l’opérateur ternaire de Ruby ressemble à ceci :

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

Dans mon exemple précédent, mon premier test-expression ressemblait à ceci :

last_name.length==0

et son if-true-expression ressemblait à ceci:

printf(",")

et son if-false-expression ressemblait à ceci:

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

Espérons que la démonstration de la syntaxe générale de l’opérateur ternaire ait aidé à rendre mon code précédent un peu plus compréhensible.

Un deuxième exemple

Si vous souhaitez un autre exemple de l’opérateur ternaire, en voici un qui utilise un test de comparaison numérique, suivi de deux déclarations puts possibles, une qui sera exécutée si le test évalue à vrai, et une autre qui sera exécutée si le test évalue à faux :

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

Comme vous pouvez le deviner, ce segment de code imprimera :

I can't drive 55!

(Ce qui résume aussi mes habitudes de conduite.)

L’opérateur ternaire est cool. Il peut raccourcir vos déclarations if/then, tout en gardant votre code Ruby lisible.