2015-06-15 10 views
6

chcę użyć potrójny operator takiego - sprawdzanie tylko true część rachunku:„Nic nie rób” używając potrójny operator

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

Czy to możliwe, aby wykluczyć logikę „else” części to oświadczenie? Próbowałem użyć return;, ale kompilator podaje błąd. Zasadniczo wszystko, co chcę osiągnąć, to instrukcja używająca potrójnego operatora, który wyglądałby tak:

foo() ? bar(); 

Czy to jest możliwe?

+1

Dlaczego nie używałbyś po prostu "jeśli"? (Nie, to niemożliwe) –

+0

Jestem ciekawy, czy to nawet możliwe. To wszystko. – domi

+3

To właściwie nie ma sensu. Wyrażenia muszą mieć wartość. – SLaks

Odpowiedz

12

Operator trójskładnikowy jest zwykle używany do natychmiastowego przypisania wartości.

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

Dla usecase, można po prostu użyć, jeśli konstrukt:

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

Brak zawijania treści klauzuli if w nawiasach klamrowych jest niezgodny z zasadami formatowania dobrych kodów, więc zwykle staje się to if (foo()) { bar(); } (trzy linie) –

+0

@IvanMatavulj: to kwestia gustu, a zdecydowanie nie jest to ogólnie przyjęta najlepsza praktyka. Osobiście uważam, że nawiasy są zbędne w tym przypadku i nie zwiększają czytelności. Zgadzam się z tą pasjonującą odpowiedzią na ten temat: http://programmers.stackexchange.com/a/16550 – wvdz

2

Jeśli to działa w ten sposób, że nie nazwałbym tego trójargumentowy więcej. Myślę, że jedynym sposobem jest zrobienie czegoś, co nie działa. na przykład wywołaj metodę, która ma pusty obiekt lub jeśli przypiszesz wartość z tej operacji do zmiennej, po prostu przypisz wartość domyślną.

Powiązane problemy