objective-c 中的 if 语句

if statement in objective-c

谁能帮我解释一下下面代码的语法?意思是"return ? if _suit is nil, and return a corresponding string in an array if _suit is not nil"。

- (NSString *)suit
{
    return _suit ? _suit : @"?";
}

是否等价于下面的代码?

if (!_suit) {
    return @"?";
} else {
    return ?
}

是的,这是 if 块的缩写。它是一个条件运算符。

格式如下(很多其他语言也一样):

condition ? ifTrue: ifFalse; 

所以你的代码:

return _suit ? _suit : @"?";

相同
if(_suit) {
    return _suit;
} else {
    return @"?";
}

您可以阅读更多相关信息 here

不,这不一样。 '?:' 运算符描述以下它只是一个 if else 语句作为一行:

(if 子句) ? : .

所以在你的情况下这意味着:

if (!_suit) {
   return @"?";
} else {
   return _suit;
}