[英]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.