O que essa linha de código significa?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
O ?
e :
me confundem.
objective-c
c
syntax
operators
conditional-operator
danielreiser
fonte
fonte
variable ?: anotherVariable
, o que isso significa?(valOrVar != 0) ? valOrVar : anotherValorvar
Respostas:
Este é o operador secundário (Objective-C é um superconjunto de C):
é semanticamente equivalente a
O ternário sem primeiro elemento (por exemplo
variable ?: anotherVariable
) significa o mesmo que(valOrVar != 0) ? valOrVar : anotherValOrVar
fonte
?:
) é ainda melhor em situações em que o lado esquerdo é uma expressão, pois?:
impede que seja avaliado mais de uma vez. Por exemplo:[myArray firstObject] ? [myArray firstObject] : @"Hello World";
chamafirstObject
duas vezes (sefirstObject
não retornarnil
), onde[myArray firstObject] ?: @"Hello World";
produz o resultado idêntico, mas nunca chamafirstObject
mais de uma vez.?:
também é chamado de operador Elvis devido à semelhança emoji com o cantor. E, é claro, neste caso, como estamos descartando um elemento, ele não é mais um operador ternário, mas um operador binário . Operadores binários incluem a grande maioria dos operadores geralmente usamos durante a programação (*
,+
,-
,^
,|
,||
,&
,>>
, etc).É o operador ternário ou condicional. Sua forma básica é:
Onde os valores serão avaliados apenas se forem escolhidos.
fonte
condition ? codeIfTrue : codeIfFalse
Simplesmente, a lógica seria
(condition) ? {code for YES} : {code for NO}
fonte
Com base na excelente explicação de Barry Wark ...
O que é tão importante sobre o operador ternário é que ele pode ser usado em locais que um if-else não pode. Ex .: Dentro de uma condição ou parâmetro de método.
... que é um ótimo uso para constantes do pré-processador:
Isso evita que você precise usar e liberar variáveis locais em padrões if-else. FTW!
fonte
Esse é apenas o operador ternário usual . Se a parte antes do ponto de interrogação for verdadeira, ela avalia e retorna a parte antes dos dois pontos, caso contrário, avalia e retorna a parte após os dois pontos.
é como
fonte
Isso faz parte do C, portanto não é específico do Objective-C. Aqui está uma tradução para uma
if
declaração:fonte
É apenas uma forma curta de escrever uma declaração if-then-else. Significa o mesmo que o seguinte código:
fonte
Objetivo-C
Para Swift
fonte
Curiosidade, no objetivo-c, se você quiser verificar nulo / zero Por exemplo:
A maneira rápida de fazer isso é:
Em seguida, você pode atualizá-lo da maneira mais simples:
Porque no Objective-C:
Então, digamos que você escreva:
o segundo parâmetro está retornando um valor booleano, portanto, uma exceção é lançada.
fonte
É um operador ternário, como uma instrução if / else.
No operador ternário, é assim: condição? o que fazer se a condição for verdadeira: o que fazer se for falsa;
fonte
Acabei de aprender algo novo sobre o operador ternário. A forma abreviada que omite o operando do meio é realmente elegante e é uma das muitas razões pelas quais C permanece relevante. Para sua informação, eu realmente entendi isso no contexto de uma rotina implementada em C #, que também suporta o operador ternário. Como o operador ternário está em C, é lógico que seria em outros idiomas que são essencialmente extensões do mesmo (por exemplo, Objective-C, C #).
fonte
Como todo mundo se referiu, é uma maneira de representar o operador condicional
using operator ternary
(condition)? true:false
Para adicionar informações adicionais, temos rapidamente uma nova maneira de representá-las usando??
.O que é semelhante a
é equivalente a
if (a>c)?a:c
==> É igual aif (a>c)?:c
em vez de
?:
podermos usar??
é rápido.fonte
significa
fonte