Cette construction est appelée opérateur ternaire en informatique et techniques de programmation.
Et Wikipedia suggère l'explication suivante:
En informatique, un opérateur ternaire (parfois appelé à tort opérateur tertiaire) est un opérateur qui prend trois arguments. Les arguments et le résultat peuvent être de différents types. De nombreux langages de programmation qui utilisent une syntaxe de type C comportent un opérateur ternaire,?:, Qui définit une expression conditionnelle.
Non seulement en Java, cette syntaxe est disponible dans PHP, Objective-C aussi.
Dans le lien suivant , il donne l'explication suivante, ce qui est assez bon pour le comprendre:
Un opérateur ternaire est une opération fonctionnant sur 3 entrées. C'est un raccourci pour une instruction if-else, et est également connu comme un opérateur conditionnel.
En Perl / PHP, cela fonctionne comme:
boolean_condition ? true_value : false_value
En C / C ++, cela fonctionne comme:
logical expression ? action for true : action for false
Cela peut être lisible pour certaines conditions logiques qui ne sont pas trop complexes, sinon il est préférable d'utiliser le bloc If-Else avec la combinaison prévue de logique conditionnelle.
Nous pouvons simplifier les blocs If-Else avec cet opérateur ternaire pour une ligne de déclaration de code.
Par exemple:
if ( car.isStarted() ) {
car.goForward();
} else {
car.startTheEngine();
}
Peut être égal à ce qui suit:
( car.isStarted() ) ? car.goForward() : car.startTheEngine();
Donc, si nous nous référons à votre déclaration:
int count = isHere ? getHereCount(index) : getAwayCount(index);
C'est en fait l'équivalent à 100% du bloc If-Else suivant :
int count;
if (isHere) {
count = getHereCount(index);
} else {
count = getAwayCount(index);
}
C'est tout!
J'espère que cela a été utile à quelqu'un!
À votre santé!