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.
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
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.
É 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;
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.
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.
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: