这行代码是什么意思?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
的吗?还有,迷惑我吧。
这行代码是什么意思?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
的吗?还有,迷惑我吧。
当前回答
它是三元或条件运算符。它的基本形式是:
condition ? valueIfTrue : valueIfFalse
其中只有在选中值时才会计算值。
其他回答
这就是常见的三元运算符。如果问号之前的部分为真,则计算并返回冒号之前的部分,否则计算并返回冒号之后的部分。
a?b:c
就像
if(a)
b;
else
c;
这只是if-then-else语句的一种简短形式。它的意思与下面的代码相同:
if(inPseudoEditMode)
label.frame = kLabelIndentedRect;
else
label.frame = kLabelRect;
简单地说,逻辑是
(条件)?{YES代码}:{NO代码}
三元运算符示例。如果值为isFemale 布尔变量是YES,打印“性别是女性”,否则打印“性别是” 男性”
? means = execute the codes before the : if the condition is true.
: means = execute the codes after the : if the condition is false.
objective - c
BOOL是否是女性= YES; NSString * valuetopprint = (isFemale == YES) ?@“性别是女性”:@“性别是男性”; NSLog (valueToPrint);//结果将是"GENDER IS FEMALE",因为isFemale的值被设置为YES。
为迅速
let isFemale = false let valuetopprint:String = (isFemale == true) ?" gender is female ": " gender is male " print(valuetopprint) //Result将是"GENDER IS MALE",因为isFemale值被设置为false。
这是C的三元运算符(Objective-C是C的超集):
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
在语义上等价于
if(inPseudoEditMode) {
label.frame = kLabelIndentedRect;
} else {
label.frame = kLabelRect;
}
没有第一个元素的三元(例如variable ?: anotherVariable)的意思与(valOrVar != 0) ?valOrVar:另一个valOrVar