dan*_*ser 266 c syntax objective-c operators conditional-operator
这行代码是什么意思?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
Run Code Online (Sandbox Code Playgroud)
在?
和:
迷惑我.
Bar*_*ark 426
这是C 三元运算符(Objective-C是C的超集):
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
Run Code Online (Sandbox Code Playgroud)
在语义上等同于
if(inPseudoEditMode) {
label.frame = kLabelIndentedRect;
} else {
label.frame = kLabelRect;
}
Run Code Online (Sandbox Code Playgroud)
没有第一元素(例如variable ?: anotherVariable
)的三元意味着相同(valOrVar != 0) ? valOrVar : anotherValOrVar
Sea*_*ean 176
它是三元或条件运算符.它的基本形式是:
condition ? valueIfTrue : valueIfFalse
Run Code Online (Sandbox Code Playgroud)
只有在选择值时才会评估值.
Var*_*yal 43
简单来说,逻辑就是
(condition) ? {code for YES} : {code for NO}
Bru*_*sky 36
以Barry Wark的优秀解释为基础......
三元运算符的重要之处在于它可以用在if-else不能的地方.即:在条件或方法参数内.
[NSString stringWithFormat: @"Status: %@", (statusBool ? @"Approved" : @"Rejected")]
Run Code Online (Sandbox Code Playgroud)
...这对预处理器常量非常有用:
// in your pch file...
#define statusString (statusBool ? @"Approved" : @"Rejected")
// in your m file...
[NSString stringWithFormat: @"Status: %@", statusString]
Run Code Online (Sandbox Code Playgroud)
这使您不必在if-else模式中使用和释放局部变量.FTW!
Bri*_*ian 13
那只是通常的三元运营商.如果问号前面的部分为true,则计算并返回冒号前的部分,否则计算并返回冒号后的部分.
a?b:c
Run Code Online (Sandbox Code Playgroud)
就好像
if(a)
b;
else
c;
Run Code Online (Sandbox Code Playgroud)