2015-06-15 16 views
6

Voglio usare l'operatore ternario come questo - controllando solo la parte true della dichiarazione:"non fare nulla" usando operatore ternario

foo() ? bar() : /* Do nothing */; 

E 'possibile escludere la logica della parte "else" di questa dichiarazione? Ho provato a utilizzare return; ma il compilatore restituisce l'errore. In pratica tutto quello che voglio ottenere è una dichiarazione tramite operatore ternario, che sarebbe simile a questa:

foo() ? bar(); 

È questo realizzabile?

+1

Perché non dovresti usare 'if'? (No, non è possibile) –

+0

Sono curioso di sapere se è possibile. Questo è tutto. – domi

+3

Questo in realtà non ha alcun senso. Le espressioni devono avere un valore. – SLaks

risposta

12

L'operatore ternario viene in genere utilizzato per assegnare immediatamente un valore.

String a = bar() ? foo() : null; 

Per il vostro caso d'uso, si può semplicemente utilizzare un costrutto if:

if (foo()) 
    bar(); 
+0

Il wrapping del corpo della clausola if in parentesi graffe non va contro le buone pratiche di formattazione del codice, quindi questo diventa solitamente if (foo()) { bar(); } (tre righe) –

+0

@IvanMatavulj: è una questione di gusti, e sicuramente non è una best practice generalmente accettata. Personalmente ritengo che le parentesi siano ridondanti in questo caso e non aggiungano alla leggibilità. Sono d'accordo con questa risposta appassionata su questo argomento: http://programmers.stackexchange.com/a/16550 – wvdz

2

se avrebbe funzionato in quel modo non sarebbe chiamarla ternario più. Penso che l'unico modo sia fare qualcosa che non faccia nulla. ad esempio chiama un metodo che ha un corpo vuoto, oppure se assegni un valore da questa operazione a una variabile, assegna solo un valore predefinito.