什么是使用条件运算符的其他什么都不做?

时间:2013-03-15 10:29:13

标签: objective-c if-statement inline

我想知道if语句的等价物:

if (condition) {
        // do something
    }else{
        // do nothing

    }

使用条件运算符:

(condition) ? // [do nothing] : {do nothing} "

6 个答案:

答案 0 :(得分:2)

使用条件运算符“无所事事”是不可能的。您总是必须在两边都有有效的表达式,尽管这两个表达式都可以转换为void

答案 1 :(得分:2)

这是三元运算符的一个缺点(?:)。

这三个地方都需要表达。你不能跳过任何一个。

您可以对其进行一些调整,但其真部分和/或假部分可以分配为:

int big=100;
big= (10 > 100) ? 0 : big;

答案 2 :(得分:0)

if (!condition) {
        // do something
    }else{
        // do nothing

    }

现在看一下!before条件: - )

!在条件刚刚切换“if”之前,“if not”......

那是你一直在寻找的吗?

答案 3 :(得分:0)

originalValue = (condition) ? newValue : originalValue

然后编译器应该删除 originalValue 不必要的赋值给自己。

GCC有一个扩展,可以为你所寻找的东西提供更多的东西,比如

originalValue = condition ?: newValue;

所以它也可以在clang中使用。你必须!但条件是。

答案 4 :(得分:0)

在普通代码中,答案是没有等价物 - 表达式的所有子表达式都必须有值,但是......

以下不是推荐

以下内容应该适用于一般情况:

condition ? ( (^{ do something })(), 0 ) : 0;

这是一般情况。如果做某事是一个单一的非复合语句;如方法调用;然后可以删除该块以给出:

condition ? (do something, 0) : 0;

同样不建议在实际代码中使用此功能!

答案 5 :(得分:0)

你可以做这样的事情

someBool ? [self someFunction] : (^{})(); //empty block