Que signifie cette ligne de code?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
Le ? et: confus moi.
Que signifie cette ligne de code?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
Le ? et: confus moi.
C'est l' opérateur C ternaire (Objective-C est un surensemble de C):
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
est sémantiquement équivalent à
if(inPseudoEditMode) {
label.frame = kLabelIndentedRect;
} else {
label.frame = kLabelRect;
}
Le ternaire sans premier élément (par exemple variable ?: anotherVariable
) signifie la même chose que (valOrVar != 0) ? valOrVar : anotherValOrVar
Bâtiment sur l’excellente explication de Barry Wark...
Ce qui est si important sur l’opérateur ternaire, c’est qu’il peut être utilisé dans des endroits qui ne peuvent pas un if-else. C’est à dire : à l’intérieur d’un paramètre de méthode ou de condition.
.. .ce qui est une grande utilisation de constantes du préprocesseur :
Cela vous évite d’avoir à utiliser et à libérer les variables locales dans les modèles if-else. FTW !
C’est juste l' habituel opérateur ternaire. Si la partie avant le point d’interrogation est true, il évalue et retourne la partie avant le signe deux-points, sinon il évalue et retourne la partie après le signe deux-points.
C’est comme
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.