Что означает знак вопроса и двоеточие (?: Троичный оператор) в target-c? - PullRequest
259 голосов
/ 07 апреля 2010

Что означает эта строка кода?

label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;

? и : смущают меня.

Ответы [ 13 ]

1 голос
/ 19 января 2015

Я только что узнал что-то новое о троичном операторе. Короткая форма, в которой опускается средний операнд, действительно элегантна и является одной из многих причин, по которой С остается актуальным. К вашему сведению, я впервые обдумал это в контексте подпрограммы, реализованной в C #, которая также поддерживает троичный оператор. Поскольку троичный оператор находится в C, очевидно, что он будет в других языках, которые по существу являются его расширениями (например, Objective-C, C #).

1 голос
/ 28 января 2014
int padding = ([[UIScreen mainScreen] bounds].size.height <= 480) ? 15 : 55;

означает

int padding; 
if ([[UIScreen mainScreen] bounds].size.height <= 480)
  padding = 15;
else
  padding = 55; 
1 голос
/ 07 января 2014

Это троичный оператор, как оператор if / else.

if(a > b) {
what to do;
}
else {
what to do;
}

В троичном операторе это так: состояние ? что делать, если условие истинно; что делать, если оно ложно;

(a > b) ? what to do if true : what to do if false;
...