2011-01-07 16 views
32

Total noob tutaj, więc bądź delikatny. Szukałem wszędzie i nie mogę znaleźć odpowiedzi na to. Jak skondensować następujące rzeczy?One-liner, jeśli instrukcje, jak przekonwertować to, jeśli-else-statement

if (expression) 
{ 
    return true; 
} 
else 
{ 
    return false; 
} 

Nie mogę go uruchomić, ponieważ zwraca coś w zamian za ustawienie czegoś. Już widziałem takie rzeczy:

somevar = (expression) ? value1 : value2; 

Jak mówiłem, proszę być łagodne :)

Odpowiedz

68
return (expression) ? value1 : value2; 

Jeśli value1 i value2 są rzeczywiście true i false jak w przykładzie, możesz równie dobrze tylko

return expression; 
+26

Dla wyjaśnienia, to się nazywa "trójargumentowy operator" – jcolebrand

+0

I rzeczywiście miał rację, gdy próbowałem go "return (wyrażenie) VALUE1: wartość2;" ale umieściłem to dokładnie na dłuższą metę. Więc mam błąd dotyczący "kodu nieosiągalnego", ponieważ nigdy nie dotarłoby do tego stwierdzenia. Cieszę się, że mimo to zapytałem "wyrażenie zwrotu"; ma więcej sensu ... dzięki! – snickered

+4

W rzeczywistości "Ternary" oznacza po prostu złożony z trzech elementów, nazywa się operator warunkowy. http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs.80).aspx – Joel

7

Wszystko należałoby w Twoim przypadku jest:

return expression; 

Powodem jest to, że samo wyrażenie ma wartość logiczną true lub false, więc jest to zbędne mieć if zablokować (lub nawet operatorowi ?:).

+0

Nie sądzę, że on rozumie, dlaczego mógłbyś wyjaśnić tę część, ale tak, to właśnie bym zrobił. – jcolebrand

2

Ponieważ wyrażenia jest wartość logiczna:

return expression; 
3

Jeśli expression zwraca wartość logiczną, można po prostu zwrócić wynik tego.

Przykład

return (a > b) 
Powiązane problemy