2013-01-25 9 views
9

Ho usato gli operatori ternari per un po 'e mi chiedevo se esistesse un metodo per dire di chiamare una funzione senza la clausola else. Esempio:Operatori ternari. Possibile un'azione a un lato?

if(isset($foo)){ 
    callFunction(); 
}else{ 

} 

Ora, ovviamente, siamo in grado di lasciare fuori il else di fare:

if(isset($foo)){ 
    callFunction(); 
} 

Ora per un ternario Come si può 'by pass' la clausola else se la condizione restituisce false?

(isset($foo))?callFunction():'do nothing!!'; 

O un mistero o impossibile?

+3

basta lasciare vuoto –

+1

Ora questo mi ha fatto sentire stupido ... lol – sourRaspberri

+0

Non hai bisogno di chiedere questo, puoi semplicemente provarlo, è banale. – markus

risposta

18

cortocircuito

isset($foo) and callFunction(); 

invertire la condizione e omettere il secondo argomento

!isset($foo) ?: callFunction(); 

o tornare solo " qualcosa "

isset($foo) ? callFunction() : null; 

Tuttavia, gli operatori ternari sono progettati per recuperare in modo condizionale un valore su due valori possibili. Stai chiamando una funzione, quindi sembra che tu stia davvero cercando if e usi impropriamente ?: per salvare i caratteri?

if (isset($foo)) callFunction(); 
1

Perché dovresti utilizzare un operatore ternario in questo caso? L'operatore ternario è pensato per essere utilizzato quando ci sono due possibili scenari e non ha molto senso nel caso in cui ti interessa solo il caso if. Se dovete farlo però, è sufficiente lasciare il caso vuota: (cond)?do_something():;

+0

Beh, quanto sopra è un esempio. Mi stavo chiedendo per le operazioni più grandi. – sourRaspberri

+0

@Beneto Operazioni più grandi? Sembra davvero che tu usi impropriamente l'operatore ternario: X – KingCrunch

0

Mettere zero dopo due punti. Inoltre, supponendo che tu sia su Perl, puoi utilizzare meglio le espressioni 'condition and action()', 'action() if condition'.

+0

Per quanto riguarda i tag che usa PHP;) tuttavia, il short-cicruit dell'espressione funziona anche in PHP '$ condition e action();', ma non l'altra notazione. Qui puoi almeno omettere le parentesi graffe, ma questo è tutto se ($ condizione) action(); ' – KingCrunch

Problemi correlati