2011-04-29 2 views

Répondre

12

Ceci est une déclaration ternaire, le ? est l'opérateur conditionnel. La déclaration revient à dire:

if (editing) { 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done"); 
} else { 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit"); 
} 

Vous pourriez penser comme:

? - Si la déclaration précédente est vrai, faire le code immédiatement après.

: - Sinon/Exécutez le code immédiatement après cela.

Vous pouvez lire plus ici http://en.wikipedia.org/wiki/Ternary_operation. Vous constaterez que cette construction est disponible dans de nombreuses langues autres que C/Objective-C.

+0

Merci mille fois. –

+1

C'est une bonne réponse. Je voudrais simplement souligner que, à proprement parler, il s'agit de «l'opérateur conditionnel»; bien qu'il soit communément appelé "ternaire", "ternaire" signifie simplement "prend trois opérandes". –

+0

C'est vrai, merci pour le commentaire! –

4

Il est appelé opérateur ternaire, c'est comme une instruction if mais sur une ligne.

Il est comme:

if (editing) 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done"); 
else 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit"); 
3

Il est appelé Ternary operation.

Ce que cela signifie est que, étant donné le code suivant:

(condition) ? a : b 

Le code exécutera a si condition est true et b autrement.

Dans votre cas, le code se comportera de la même façon que si vous deviez écrire:

if (editing) { 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done"); 
} else { 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit"); 
} 
4

Ceci est l'opérateur conditionnel: x = a ? b : c. Si a est vrai, il assigne b à , sinon il affecte c.

3

est un court instruction if

dans le code ci-dessous la déclaration 1> 0 est vérifiée, si son vrai premier jeu sera exécuté, après la si son faux, il courra le code derrière le « : »

(1 > 0)? true: false; 
2

condition?ValueIfTrue: ValueIfFalse

Cela peut être lu comme

if (editing) 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done"); 
else 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit"); 
1

Cela a évidemment répondu (à fond) ci-dessus, mais je jette mon chapeau (pour quelqu'un de chance juste apprendre la programmation arrive à tomber par hasard sur ce):

Voici ma définition anglais simple d'une déclaration ternaire (ce que c'est)

Variable = what_to_check ? true_value : false_value; 

dit:

est what_to_check vrai? D'accord, définissez Variable sur true_value. Si ce n'est pas le cas, définissez Variable sur false_value.

Questions connexes