Что означает эта строка кода?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
?
И :
запутать меня.
objective-c
c
syntax
operators
conditional-operator
danielreiser
источник
источник
variable ?: anotherVariable
, что это значит?(valOrVar != 0) ? valOrVar : anotherValorvar
Ответы:
Это троичный оператор C (Objective-C является надмножеством C):
семантически эквивалентно
Тройной без первого элемента (например
variable ?: anotherVariable
) означает то же самое, что(valOrVar != 0) ? valOrVar : anotherValOrVar
источник
?:
) даже лучше в ситуациях, когда левая часть является выражением, поскольку?:
предотвращает его оценку более одного раза. Например:[myArray firstObject] ? [myArray firstObject] : @"Hello World";
вызываетfirstObject
дважды (еслиfirstObject
не возвращаетnil
), где[myArray firstObject] ?: @"Hello World";
выдает одинаковый результат, но никогда не вызываетfirstObject
больше одного раза.?:
также называется оператором Элвиса из-за сходства смайликов с певцом. И, конечно, в этом случае, когда мы отбрасываем один элемент, это уже не троичный оператор, а бинарный оператор . Бинарные операторы включают в себя подавляющее большинство операторов мы обычно используем при программировании (*
,+
,-
,^
,|
,||
,&
,>>
и т.д.).Это троичный или условный оператор. Это основная форма:
Где значения будут оцениваться, только если они выбраны.
источник
condition ? codeIfTrue : codeIfFalse
Просто логика будет
(condition) ? {code for YES} : {code for NO}
источник
Опираясь на отличное объяснение Барри Уорка ...
В тернарном операторе так важно то, что его можно использовать там, где не может if-else т.е.: внутри условия или параметра метода.
... который отлично подходит для констант препроцессора:
Это избавляет вас от необходимости использовать и освобождать локальные переменные в шаблонах if-else. FTW!
источник
Это просто обычный троичный оператор . Если часть перед знаком вопроса имеет значение true, она оценивает и возвращает деталь перед двоеточием, в противном случае она оценивает и возвращает деталь после двоеточия.
как
источник
Это часть C, поэтому она не специфична для Objective-C. Вот перевод в
if
заявление:источник
Это просто короткая форма написания оператора if-then-else. Это означает то же, что и следующий код:
источник
Objective-C
Для Свифта
источник
Забавный факт, в target-c, если вы хотите проверить null / nil Например:
Быстрый способ сделать это:
Тогда вы можете обновить его до простого способа:
Потому что в Objective-C:
Так скажем, вы пишете:
второй параметр возвращает логическое значение, поэтому генерируется исключение.
источник
Это троичный оператор, как оператор if / else.
В троичном операторе это так: условие? что делать, если условие истинно; что делать, если оно ложно;
источник
Я только что узнал что-то новое о троичном операторе. Краткая форма, в которой опускается средний операнд, действительно элегантна и является одной из многих причин, по которой С остается актуальным. К вашему сведению, я впервые обдумал это в контексте подпрограммы, реализованной в C #, которая также поддерживает троичный оператор. Поскольку троичный оператор находится в C, очевидно, что он будет в других языках, которые по существу являются его расширениями (например, Objective-C, C #).
источник
Как все говорили, это способ представления условного оператора
Использование тернарного оператора
(condition)? true:false
Чтобы добавить дополнительную информацию, в Swift у нас есть новый способ ее представления, используя??
.Который похож на
эквивалентно
if (a>c)?a:c
==> Равноif (a>c)?:c
вместо того, чтобы
?:
мы могли использовать??
это быстро.источник
средства
источник