繁体   English   中英

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

[英]What is the equivalent of else do nothing using the conditional operator?

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

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

    }

使用条件运算符:

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

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

这是三元运算符(?:)的不利之处。

它需要三个地方的表达。 你不能跳过他们中的任何一个。

您可以对其进行一些调整,但其True-part和/或False-part可以分配给:

int big=100;
big= (10 > 100) ? 0 : big;
if (!condition) {
        // do something
    }else{
        // do nothing

    }

现在看一下!之前的汇款:-)

的! 条件之前只需将“if”切换为“if not”......

那是你一直在寻找的吗?

originalValue = (condition) ? newValue : originalValue

然后编译器应该删除对原来不必要的originalValue赋值。

海湾合作委员会有一个扩展,可以给你更多的东西给你所寻找的东西,比如

originalValue = condition ?: newValue;

因此它也可以在clang中使用。 你必须! 虽然条件。

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

以下不是推荐

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

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

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

condition ? (do something, 0) : 0;

在实际代码中不建议这样做!

你可以做这样的事情

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM