C / Objective C中的一个奇怪的return语句

时间:2013-11-27 06:13:02

标签: ios objective-c c return

大家,

我是C / Objective-C的新手,我正在Xcode中做一些练习。实际上它是来自斯坦福iTunes.U CS 193 iOS课程的第二讲,如果有人熟悉...

该练习要求为名为Card的班级创建一个属性。

所以在.h文件中声明:

@property (strong, nonatomic) NSString *suit;

在.m文件中,它覆盖了getter方法:

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

在这里,我不明白这个退货声明的意思......

根据教练的说法,getter方法可以防止套装属性为零。但我尝试使用以下代码而不是上面的代码,它没有用。

-(NSString *)suit
{
    if (!_suit)
        return _suit;
    else
        return @"?";
}

这里有两个问题:

1,

return _suit ? _suit : @"?";

这个return语句是什么意思?

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

赞赏!

2 个答案:

答案 0 :(得分:2)

x ? y : z语法称为conditional or ternary if operator。如果x为真,则其值为y,否则其值为z

当您将其转换为if / else表单时,如果您不应该将其转换为_suit。它应该是:

if (_suit)
    return _suit;
...

答案 1 :(得分:1)

将您的代码更改为以下内容:

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