Questo costrutto si chiama Operatore ternario in Informatica e tecniche di programmazione.
E Wikipedia suggerisce la seguente spiegazione:
In informatica, un operatore ternario (a volte erroneamente chiamato un operatore terziario) è un operatore che prende tre argomenti. Gli argomenti e il risultato possono essere di diversi tipi. Molti linguaggi di programmazione che usano la sintassi di tipo C presentano un operatore ternario,?:, Che definisce un'espressione condizionale.
Non solo in Java, questa sintassi è disponibile anche in PHP, Objective-C.
Nel seguente link fornisce la seguente spiegazione, che è abbastanza buona per capirla:
Un operatore ternario è un'operazione che opera su 3 ingressi. È un collegamento per un'istruzione if-else ed è anche noto come operatore condizionale.
In Perl / PHP funziona come:
boolean_condition ? true_value : false_value
In C / C ++ funziona come:
logical expression ? action for true : action for false
Questo potrebbe essere leggibile per alcune condizioni logiche che non sono troppo complesse, altrimenti è meglio usare il blocco If-Else con la combinazione prevista di logica condizionale.
Possiamo semplificare i blocchi If-Else con questo operatore Ternary per una riga di istruzione del codice.
Per esempio:
if ( car.isStarted() ) {
car.goForward();
} else {
car.startTheEngine();
}
Potrebbe essere uguale al seguente:
( car.isStarted() ) ? car.goForward() : car.startTheEngine();
Quindi, se ci riferiamo alla tua affermazione:
int count = isHere ? getHereCount(index) : getAwayCount(index);
In realtà è l'equivalente del 100% del seguente blocco If-Else :
int count;
if (isHere) {
count = getHereCount(index);
} else {
count = getAwayCount(index);
}
Questo è tutto!
Spero che questo sia stato utile per qualcuno!
Saluti!