这行代码是什么意思?

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

的吗?还有,迷惑我吧。


当前回答

这是C的三元运算符(Objective-C是C的超集):

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

在语义上等价于

if(inPseudoEditMode) {
 label.frame = kLabelIndentedRect;
} else {
 label.frame = kLabelRect;
}

没有第一个元素的三元(例如variable ?: anotherVariable)的意思与(valOrVar != 0) ?valOrVar:另一个valOrVar

其他回答

三元运算符示例。如果值为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

这是C的一部分,不是Objective-C特有的。下面是if语句的翻译:

if (inPseudoEditMode)
    label.frame = kLabelIndentedRec;
else
    label.frame = kLabelRect;

基于Barry Wark的精彩解释……

三元操作符的重要之处在于它可以用于if-else不能使用的地方。即:在条件或方法参数内。

[NSString stringWithFormat: @"Status: %@", (statusBool ? @"Approved" : @"Rejected")]

...这是预处理常量的一个很好的用途:

// in your pch file...
#define statusString (statusBool ? @"Approved" : @"Rejected")

// in your m file...
[NSString stringWithFormat: @"Status: %@", statusString]

这使您不必在if-else模式中使用和释放局部变量。增值!

正如大家所说,它是一种表示条件运算符的方法

if (condition){ 
    true 
} 
else {
    false
}

使用三元运算符(条件)?真:假 为了增加额外的信息,在swift中我们有新的方法来表示它使用??

let imageObject: UIImage = (UIImage(named: "ImageName")) ?? (initialOfUsername.capitalizedString).imageFromString

这和

int a = 6, c= 5;
if (a > c) 
{ 
 a is greater
} else {
 c is greater
}

等于

如果(> c) ?a:c ==> = if (a>c)?c:

我们可以用??是迅速的。