Эта конструкция называется Тернарный оператор в области компьютерных наук и технологий программирования.
И Википедия предлагает следующее объяснение:
В информатике троичный оператор (иногда неправильно называемый третичным оператором) - это оператор, который принимает три аргумента. Аргументы и результат могут быть разных типов. Многие языки программирования, использующие C-подобный синтаксис, имеют троичный оператор?:, Который определяет условное выражение.
Этот синтаксис доступен не только в Java, но и в PHP, а также в Objective-C.
В следующей ссылке она дает следующее объяснение, которое приятно понять:
Тернарный оператор - это операция, выполняемая на 3 входах. Это сокращение для оператора if-else, также известное как условный оператор.
В Perl / PHP он работает как:
boolean_condition ? true_value : false_value
В C / C ++ это работает как:
logical expression ? action for true : action for false
Это может быть читаемо для некоторых логических условий, которые не слишком сложны, иначе лучше использовать Блок If-Else с предполагаемой комбинацией условной логики.
Мы можем упростить блоки If-Else с помощью этого троичного оператора для одной строки оператора кода.
Например:
if ( car.isStarted() ) {
car.goForward();
} else {
car.startTheEngine();
}
Может быть равно следующему:
( car.isStarted() ) ? car.goForward() : car.startTheEngine();
Итак, если мы ссылаемся на ваше утверждение:
int count = isHere ? getHereCount(index) : getAwayCount(index);
На самом деле это 100% эквивалент следующего блока If-Else :
int count;
if (isHere) {
count = getHereCount(index);
} else {
count = getAwayCount(index);
}
Вот и все!
Надеюсь, что это было полезно для кого-то!
Ура!