问号为“if”符号

时间:2012-06-26 16:15:01

标签: objective-c

我知道使用这样的语法:

(something) ? TRUE : FALSE

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

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

这里有第一行代码的语法吗?

当然我知道我可以做一些 之类的事情

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

但这是AFAIK非常难看的解决方案

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

脱离我的头脑我认为这应该有效(编辑:但请参阅andyvn22的回答:返回类型)

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

但是,作为一般规则,使用易于理解的符号几乎总是比使用更简洁但更神秘的符号更好。

答案 2 :(得分:2)

? :语句中使用三元运算符(这就是调用return语法)的简单方法:

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

使用快速变量可以使其更简洁:

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

然而!你的回报类型是什么?您可能会返回[myVar objectForKey:objectName]类型id,或者您将返回-1 NSInteger类型{{1}}。一个是Objective-C对象,另一个是C原语 - 这个具体的例子看起来很可疑。