Konstrukcja ta nosi nazwę operatora trójskładnikowego w technikach informatyki i programowania.
I Wikipedia sugerują następujące wyjaśnienie:
W informatyce operator trójskładnikowy (czasami błędnie nazywany operatorem trzeciorzędnym) to operator, który przyjmuje trzy argumenty. Argumenty i wynik mogą być różnych typów. Wiele języków programowania używających składni podobnej do języka C zawiera operator trójskładnikowy,?:, Który definiuje wyrażenie warunkowe.
Nie tylko w Javie, ta składnia jest dostępna również w PHP, Objective-C.
W poniższym linku podaje następujące wyjaśnienie, które jest ciche, dobrze je zrozumieć:
Operator trójskładnikowy to operacja działająca na 3 wejściach. Jest to skrót do instrukcji if-else i jest również nazywany operatorem warunkowym.
W Perl / PHP działa jako:
boolean_condition ? true_value : false_value
W C / C ++ działa jak:
logical expression ? action for true : action for false
Może to być czytelne dla niektórych warunków logicznych, które nie są zbyt złożone, w przeciwnym razie lepiej jest użyć bloku Jeśli- Inaczej z zamierzoną kombinacją logiki warunkowej.
Możemy uprościć bloki If-Else za pomocą tego operatora trójskładnikowego dla jednej linii instrukcji kodu.
Na przykład:
if ( car.isStarted() ) {
car.goForward();
} else {
car.startTheEngine();
}
Może być równe następującym:
( car.isStarted() ) ? car.goForward() : car.startTheEngine();
Więc jeśli odnosimy się do twojego oświadczenia:
int count = isHere ? getHereCount(index) : getAwayCount(index);
W rzeczywistości jest to 100% odpowiednik następującego bloku Jeśli-Inaczej :
int count;
if (isHere) {
count = getHereCount(index);
} else {
count = getAwayCount(index);
}
Otóż to!
Mam nadzieję, że to komuś pomogło!
Twoje zdrowie!