2009-03-29 24 views

risposta

4

E 'qualcosa di simile al ciclo for. Ha senso per quello che è fatto, ma quando si tenta di attaccare più cose in esso, diventa illeggibile.

0

Di quale operatore ternario stai parlando?

Un operatore ternario è un operatore che accetta tre argomenti.

Se stai parlando del? : operatore, questo è chiamato l'operatore condizionale. Non posso più vivere senza di essa, personalmente. Se le altre affermazioni mi sembrano così disordinate, specialmente quando si fa un incarico condizionale. Alcuni si lamentano che sembra disordinato, ma è ancora possibile (specialmente se si utilizza Visual Studio o un altro IDE di formattazione intelligente) per rendere le cose facilmente leggibili e si dovrebbe comunque commentare tutti i condizionali.

+3

In genere viene chiamato operatore ternario perché è l'unico operatore che accetta tre argomenti. – Samuel

+0

Sto parlando? : operatore (l'ho sempre chiamato operatore ternario: ho sbagliato?) –

+2

+1 per la precisione. Sì, si chiama l'operatore condizionale. Capita di essere * un * operatore ternario, ma che descrive solo il numero di operandi, non il suo scopo/comportamento. Se il team C# introduce un altro operatore ternario, le persone dovranno davvero imparare il nome giusto ... –

3

L'operatore ternario condizionale può essere decisamente utilizzato in modo eccessivo e alcuni lo trovano piuttosto illeggibile. Tuttavia, trovo che possa essere molto pulito nella maggior parte delle situazioni che è prevista un'espressione booleana, a condizione che il suo intento sia chiaro. Se l'intento è non chiaro, è preferibile utilizzare una variabile temporanea con un nome chiaro il cui valore viene assegnato utilizzando un'istruzione if, o utilizzare una funzione con un buon nome che restituisce il valore previsto.

8

Per brevi tag nei linguaggi di template come PHP, per esempio:

<form> 
<input type='radio' name='gender' value='m' <?=($gender=='m')?"checked":""?>>Male 
<input type='radio' name='gender' value='f' <?=($gender=='f')?"checked":""?>>Female 
</form> 

Per interruttori in JavaScript/jQuery:

var el = $("#something"); 
$(el).is(':visible') ? $(el).hide("normal") : $(el).fadeIn("normal"); 

Buono per l'assegnazione, in particolare quando un particolare nome di variabile può assumere diversi tipi:

$var = ($foo->isFoo()) ? 'Success!' : false; 
23

Per motivi di leggibilità, utilizzo solo un ternario se si inserisce in una linea di 80 caratteri.