Ios C/C中一个奇怪的返回语句

Ios C/C中一个奇怪的返回语句,ios,objective-c,c,return,Ios,Objective C,C,Return,各位, 我是C/Objective-C新手,我正在Xcode中做一些练习。事实上,这是斯坦福iTunes的第二堂课。2013年秋季U CS 193 iOS课程,如果有人熟悉 这个练习要求为一个名为Card的类创建一个属性 因此,在.h文件中,它声明: @property (strong, nonatomic) NSString *suit; 在.m文件中,它覆盖了getter方法: -(NSString *)suit { return _suit ? _suit : @"?"; }

各位,

我是C/Objective-C新手,我正在Xcode中做一些练习。事实上,这是斯坦福iTunes的第二堂课。2013年秋季U CS 193 iOS课程,如果有人熟悉

这个练习要求为一个名为Card的类创建一个属性

因此,在.h文件中,它声明:

@property (strong, nonatomic) NSString *suit;
在.m文件中,它覆盖了getter方法:

-(NSString *)suit
{
    return _suit ? _suit : @"?";
}
在这里,我不明白这个返回语句是什么意思

根据讲师的说法,getter方法可以防止suit属性为零。但是我试着用下面的代码来代替上面的代码,它不起作用

-(NSString *)suit
{
    if (!_suit)
        return _suit;
    else
        return @"?";
}
这里有两个问题:

一,

return\u套装_诉讼:@“?”

这个返回语句是什么意思

2、为什么我的代码不起作用


谢谢

将代码更改为,如下所示:

-(NSString *)suit
{
    if (_suit) //if _suit exists, then return _suit. !_suit is wrong.
        return _suit;
    else
        return @"?";
}

x?y:z
语法称为。如果
x
为真,则其值为
y
,否则其值为
z

当您将其转换为
if
/
else
表单时,您将其转换为
\u suit
,而您不应该这样做。应改为:

if (_suit)
    return _suit;
...

它被称为条件运算符。这很清楚。万分感谢@因为它是C语言中唯一的三元运算符,我通常只听到它叫三元运算符。我想我从来没有听过像条件运算符这样有用的东西调用它,但这确实更有意义。我明白了。。谢谢!检查