O que é o: operador

num exemplo de código Objective-C encontrei este operador

self.itemViews[@(0)] ?: [self.dataSource slidingViewStack:self viewForItemAtIndex:0 reusingView:[self dequeueItemView]];

o código compila com a Apple LLVM 4.2.

a única coisa que encontrei foi ser um operador vetorial, mas eu não acho que Objective-C, e para essa matéria C, tem operadores vetoriais. Por isso, alguém pode, por favor, dar referência e ou documentação deste operador.

Author: NebulaFox, 2013-07-31

6 answers

?: é o operador condicional C .

a ? b : c

Rendimento b valor se a for diferente de 0 e c SE a for igual a 0.

Uma extensão GNU (condicional com Operand omitido permite usá - la sem segundo operando:

 x ? : y 

É equivalente a

 x ? x : y
 7
Author: ouah, 2013-07-31 09:39:00

Conhece o operador ternário ? Normalmente visto no estilo:

test ? result_a : result_b;
[[5] Tudo o que aconteceu aqui é que o primeiro ramo não foi dado de modo que nada vai acontecer no caso positivo. Semelhante ao seguinte:
test ?: result_b;

Devido à forma como o C é avaliado, isto irá retornar result_b se o teste for falso, caso contrário ele irá retornar test.

No exemplo que deu-se a vista estiver em falta, volta a verificar a fonte de dados para fornecer um valor de substituição.

 2
Author: Aaron Cronin, 2013-07-31 09:44:30

É o operador ternário , Uma vez que Objective-C é um superconjunto de C você pode usar este operador.

Algum tutorialsobre isto.

A = x ? : y;

A expressão é equivalente a

A = x ? x: y;

 1
Author: NINCOMPOOP, 2013-07-31 09:37:21
É o ... operador, chamado de operador ternário, que é utilizado desta forma:
condition ? true-branch : false-branch; 

Quando a condição é avaliada como verdadeira (não zero), o ramo antes de : ser executado, caso contrário o outro ramo é executado. Isto pode até devolver um valor:

value = condition ? true-branch : false-branch; 

No seu caso, o valor de retorno é ommitido e o ramo verdadeiro está vazio (nada a fazer). O valor de retorno de condition é devolvido, mas não é usado no seu exemplo.

Equivalente a

if (!self.itemViews[@(0)]) 
  [self.dataSource slidingViewStack:self viewForItemAtIndex:0 reusingView:[self dequeueItemView]];

Que é imho muito melhor estilo de programação.

 1
Author: Hermann Klecker, 2013-07-31 09:40:40

Este operador é utilizado emObjectivo C e este operador é utilizado para operador condicional.Se uma declaração será executada ou enquanto outra depende do termo lógico que é usado e a entrada que você está fornecendo.

 1
Author: Dorothy Estes, 2013-07-31 09:49:47

O acima é chamado de operador ternário ou operador condicional.

A sintaxe é,

     <condition>?<true_part>:<false_part>

Aqui, se a condição for verdadeira, será considerado como valor, caso contrário será considerado como valor.

Por favor, consulte isto, http://en.wikipedia.org/wiki/%3F:

 1
Author: Sahana, 2013-08-01 05:17:52