Il ternario (o condizionale) l'operatore valuterà un'espressione e restituirà un valore se è vero e un altro valore se è falso. È un po 'come una scorciatoia, un'istruzione if compatta.
L'operatore ternario di Ruby ha i suoi usi ma è anche un po 'controverso.
Diamo un'occhiata a questo esempio:
Qui, l'operatore condizionale viene utilizzato per selezionare tra due stringhe. L'intera espressione dell'operatore è tutto compreso il condizionale, il punto interrogativo, due stringhe e i due punti. Il formato generale di questa espressione è il seguente: condizionale? vero falso.
Se l'espressione condizionale è vera, l'operatore valuterà come espressione vera. In caso contrario, verrà valutata come espressione falsa. In questo esempio, è tra parentesi, quindi non interferisce con gli operatori di concatenazione di stringhe che lo circondano.
In altre parole, l'operatore condizionale è come un Se dichiarazione. Ricordati che Se le istruzioni in Ruby valutano l'ultimo valore nel blocco che viene eseguito. Quindi, potresti riscrivere l'esempio precedente in questo modo:
Questo codice è funzionalmente equivalente e forse un po 'più facile da capire. Se io è maggiore di 10, il Se l'istruzione stessa valuterà la stringa "maggiore di" o valuterà la stringa "minore o uguale a". Questa è la stessa cosa che sta facendo l'operatore ternario, solo l'operatore ternario è più compatto.
Quindi, quali usi ha l'operatore ternario? Ha degli usi, ma non ce ne sono molti e potresti andare d'accordo senza di essa.
Di solito è usato per calzascarpe in valori in cui i condizionali sarebbero troppo ingombranti. Viene anche utilizzato nell'assegnazione variabile per selezionare rapidamente tra due valori.
Ecco due casi d'uso tipici che vedrai per l'operatore ternario:
Potresti aver notato che questo sembra abbastanza non-Ruby. Le espressioni complesse non appartengono a una riga di Ruby: di solito è suddivisa e più facile da leggere. Tuttavia, vedrai questo operatore e può essere utilizzato in modo efficace senza sfuggire di mano.
Una regola da seguire è che se si utilizza questo operatore per selezionare tra due valori con un semplice condizionale, è OK usare. Se stai facendo qualcosa di più complesso, probabilmente dovresti usare un Se dichiarazione invece.