【问题标题】:if statement in objective-c [duplicate]Objective-c中的if语句[重复]
【发布时间】:2015-03-01 20:18:37
【问题描述】:

有人可以帮我解释一下以下代码的语法吗?它的意思是“如果_suitnil,则返回?,如果_suit 不是nil,则返回数组中的相应字符串”。

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

是否相当于下面的代码?

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

【问题讨论】:

  • 第二次返回应该是return _suit;
  • 另外,顺便说一下,return _suit ? _suit : @"?"; 可以进一步简化为return _suit ?: @"?";

标签: objective-c if-statement ternary-operator null


【解决方案1】:

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

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

condition ? ifTrue: ifFalse; 

所以你的代码:

return _suit ? _suit : @"?";

是一样的

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

您可以阅读更多关于它的信息here

【讨论】:

  • 我不会链接到 Java 资源。 Java 和 Obj-C 之间存在细微差别。
  • 很公平。如果您有指向 Obj-C 资源的良好链接,请继续编辑它。
【解决方案2】:

不,不一样。 '?:' 操作符描述它只是一个 if else 语句作为单行:

(if 子句) ? : .

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    相关资源
    最近更新 更多