这行代码是什么意思?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
的吗?还有,迷惑我吧。
这行代码是什么意思?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
的吗?还有,迷惑我吧。
当前回答
这只是if-then-else语句的一种简短形式。它的意思与下面的代码相同:
if(inPseudoEditMode)
label.frame = kLabelIndentedRect;
else
label.frame = kLabelRect;
其他回答
这就是常见的三元运算符。如果问号之前的部分为真,则计算并返回冒号之前的部分,否则计算并返回冒号之后的部分。
a?b:c
就像
if(a)
b;
else
c;
int padding = ([[UIScreen mainScreen] bounds].size.height <= 480) ? 15 : 55;
意味着
int padding;
if ([[UIScreen mainScreen] bounds].size.height <= 480)
padding = 15;
else
padding = 55;
我刚学了一些关于三元运算符的新东西。省略中间操作数的简短形式确实很优雅,这是C语言仍然重要的众多原因之一。仅供参考,我第一次真正了解这个是在c#实现的一个例程的上下文中,该例程也支持三元操作符。由于三元运算符是在C语言中,因此在其他本质上是它的扩展的语言中(例如,Objective-C, c#)也是如此。
这只是if-then-else语句的一种简短形式。它的意思与下面的代码相同:
if(inPseudoEditMode)
label.frame = kLabelIndentedRect;
else
label.frame = kLabelRect;
这是C的一部分,不是Objective-C特有的。下面是if语句的翻译:
if (inPseudoEditMode)
label.frame = kLabelIndentedRec;
else
label.frame = kLabelRect;