很抱歉,如果这似乎是一个迟钝的问题,但如果另一个布尔值为真,那么最简单的方法是反转布尔值。换句话说,写condition ? !value : value
的最短方式是什么,最好只评估value
一次?
编辑:您知道,我将结果传递给方法
答案 0 :(得分:9)
最短的路是
value ^= condition;
答案 1 :(得分:4)
你想要的只是
if (condition)
value = !value;
无需携带条件运算符;那只会是不必要的混乱。这比
更可取的原因value = condition ? !value : value;
是因为无论condition
的值如何,上述都会执行赋值;如果condition
为false
,我们只需将value
分配给自己。这也有效,但实际上并不是你想要的逻辑。如果 value
为真,您想要反转condition
(即执行作业)。我认为第二种变体只是对条件运算符的误用。除此之外,第一个变体肯定更易读,更容易理解。
答案 2 :(得分:3)
你可以尝试:
value = condition ^ value
虽然不是最易读的解决方案。
答案 3 :(得分:1)
这是你在寻找什么?
if(condition)
value = !value
答案 4 :(得分:1)
为什么你甚至会打扰短期或长期。更喜欢更易读的代码。你可以写
if (SomeCondition) {
value = !value;
}
由于不需要else
条件,因为value
在其他地方是value
。
答案 5 :(得分:0)
正如您的问题所说'invert bool if true
'
你应该使用:
if(statement)
{
value=!value;
}
答案 6 :(得分:0)
一个好的方法是拥有这样的函数或方法
boolean invert(boolean condition, boolean value){ return condition != value; }
事实上:
condition value inversion
t t f
t f t
f t t
f f f
在前两种情况下,条件为true,并且执行求反,否则在后两种情况下。