假设我有以下bool:
当isA,isB或isC为真时,如果所有真正的bool'对应的isExisting bools也是如此,我想做点什么。如果isA,isB或isC为false,则其对应的isExisting bool无关紧要。
以下是我提出的建议:
if ((isA || isB || isC)
&& ((!isA || isExistingA)
&& (!isB || isExistingB)
&& (!isC || isExistingC)))
{
// do something
}
我显然今天无法思考,并且想知道是否有更简单的方法来表达这一点。
答案 0 :(得分:7)
Wolfram Alpha可以简化布尔方程,试试这个link
但是在我看来,不要太担心这一点,更重要的是保持if语句的清晰和可读性,而不是担心紧凑性或性能。
答案 1 :(得分:1)
问题是要求尽管只有一个 isX 变量必须为true,但必须检查所有 isX 变量。所以我认为你不能用较少的“比较”来写一个声明。
我认为您当前的解决方案是最短的形式,但如果我在没有解释的情况下阅读该代码,我可能会在不看两次的情况下理解它(我假设实际名称更具描述性,可能更有意义读者)。