我想知道if语句的等价物:
if (condition) {
// do something
}else{
// do nothing
}
使用条件运算符:
(condition) ? // [do nothing] : {do nothing} "
答案 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