1

我知道使用这样的语法:

(something) ? TRUE : FALSE

但是如果我想返回检查变量怎么办?例如:

if([myVar objectForKey:objectName])
    return [myVar objectForKey:objectName]
else
    return -1;

这里有没有像第一行代码这样的语法?

当然我知道我可以简单地做类似的事情

([myVar objectForKey:objectName]) ? return [myVar objectForKey:objectName] :  return -1;

但这是 AFAIK 非常丑陋的解决方案

4

3 回答 3

2

我不确定你在问什么,但你总是可以这样做:

id foo = [myVar objectForKey:objectName];
return (foo) ? foo : -1;

或者

return [myVar objectForKey:objectName] ? [myVar objectForKey:objectName] : -1;
于 2012-06-26T16:19:12.637 回答
2

在我的脑海中,我认为这应该可行(编辑:但请参阅 andyvn22 的回答:返回类型)

id foo;
return (foo = [myVar objectForKey:objectName]) ? foo : -1;

不过,作为一般规则,您几乎总是最好使用一种易于理解的符号,而不是稍微简洁但神秘的符号。

于 2012-06-26T16:26:55.753 回答
2

一种简单的方法可以在语句中使用三元运算符(这? :就是所谓的语法)return

return [myVar objectForKey:objectName] ? [myVar objectForKey:objectName] : -1;

并且可以通过快速变量使其更简洁:

id result = [myVar objectForKey:objectName];
return result ? result : -1;

然而!你在这里的返回类型是什么?有可能你会 return [myVar objectForKey:objectName],这是 type id,或者你会 return -1,这是 type NSInteger。一个是 Objective-C 对象,另一个是 C 原语——这个具体的例子似乎有些可疑。

于 2012-06-26T16:27:03.960 回答