O operador ternário Ruby sintaxe

Aqui está um exemplo rápido de algum código fonte Ruby, mostrando como utilizei o operador ternário do Ruby num método que imprime um registo CSV para uma classe que eu defini:

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

Como pode ver a partir desse método, cada linha usa o operador ternário para tomar a seguinte decisão:

  1. Se o comprimento do campo dado for igual a 0, use a primeira instrução printf.
  2. Outros, use a segunda printf instrução.

Pode não parecer muito, mas é só isso. O legal é que é muito mais curto que o equivalente a if/then sintaxe, e ainda é muito fácil de ler.

Se você quiser um pouco mais de informação sobre o operador ternário Ruby, sinta-se à vontade para continuar lendo.

Sintaxe geral do operador ternário

Como pode ver pelo exemplo anterior, a sintaxe geral do operador ternário do Ruby é assim:

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

No meu exemplo anterior, o meu primeiro test-expression era assim:

last_name.length==0

e o seu if-true-expression ficou assim:

printf(",")

e o seu if-false-expression ficou assim:

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

Aesperadamente demonstrando a sintaxe geral do operador ternário ajudou a tornar o meu código anterior um pouco mais compreensível.

Um segundo exemplo

Se você quiser mais um exemplo do operador ternário, aqui está um que usa uma comparação de teste numérico, seguido por duas possíveis puts afirmações, uma que será executada se o teste for verdadeiro, e outra que será executada se o teste for falso:

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

Como você pode adivinhar, este segmento de código será impresso:

I can't drive 55!

(Que também resume os meus hábitos de condução.)

O operador ternário é legal. Ele pode encurtar as suas declarações if/then, e ainda mantém o seu código Ruby legível.