2013-01-25 10 views
9

Przez jakiś czas korzystałem z operatorów trójskładnikowych i zastanawiałem się, czy istnieje metoda pozwalająca na wywołanie funkcji bez klauzuli else. Przykład:Ternary Operators. Możliwe jednostronne działanie?

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

} 

Teraz oczywiście możemy pominąć else aby:

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

teraz za potrójny Jak możesz „przejściu przez” klauzuli innego jeśli warunek zwraca fałsz?

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

Albo tajemnica, czy nie jest możliwe?

+3

Po prostu zostaw to puste –

+1

Teraz poczułam się głupio ... lol – sourRaspberri

+0

Nie musisz o to pytać, możesz po prostu spróbować, to banalne. – markus

Odpowiedz

18

Zwarcie

isset($foo) and callFunction(); 

Rewers kondycję i drugi argument

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

lub wrócić po prostu " coś "

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

Jednak operatory potrójne są zaprojektowane do warunkowego pobierania wartości z dwóch możliwych wartości. Wywołujesz funkcję, więc wygląda na to, że naprawdę szukasz if i niewłaściwie używasz ?: do zapisywania znaków?

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

Dlaczego w tym przypadku używałbyś operatora trójskładnikowego? Operator trójskładnikowy ma być używany, gdy istnieją dwa możliwe scenariusze i nie ma większego sensu w przypadku, gdy interesuje Cię tylko sprawa if. Jeśli trzeba zrób to jednak po prostu zostawić sprawę puste: (cond)?do_something():;

+0

Cóż powyższy przykład. Właśnie zastanawiałem się nad większymi operacjami. – sourRaspberri

+0

@Beneto Większe operacje? Naprawdę wygląda na to, że niewłaściwie używasz operatora trójskładnikowego: X – KingCrunch

0

Umieść zero po dwukropku. Ponadto, zakładając, że jesteś w Perlu, możesz użyć lepszych "warunków i akcji()", "action(), jeśli warunek" idiomów.

+0

Jeśli chodzi o tagi, to używa PHP;) jednak krótkie skracanie wypowiedzi działa również w PHP '$ condition and action();', ale nie inne notacje. Tutaj możesz przynajmniej pominąć nawiasy klamrowe, ale to wszystko 'if ($ condition) action();' – KingCrunch