2

假设我有以下布尔值:

  • 是A
  • 为B
  • 是C
  • 是现有的A
  • 是现有B
  • isExistingC

当isA、isB、isC为真时,如果所有真bool对应的isExisting bool都为真,我想做点什么。如果 isA、isB 或 isC 为 false,则其对应的 isExisting bool 无关紧要。

这是我想出的:

if ((isA || isB || isC)
    && ((!isA || isExistingA)
    && (!isB || isExistingB)
    && (!isC || isExistingC)))
{
    // do something
}

我今天显然无法思考,想知道是否有更简单的方法来表达这一点。

4

2 回答 2

7

Wolfram Alpha 可以简化布尔方程,试试这个链接

但是在我看来,不要太担心这一点,保持 if 语句的简洁和可读性比担心紧凑性或性能更重要。

于 2013-02-13T21:43:51.630 回答
1

问题是要求虽然只有一个isX变量必须为真,但必须检查所有isX变量。所以我认为你不能用更少的“比较”来写一个声明。

我认为您当前的解决方案是最短的形式,但是如果我在没有解释的情况下阅读该代码,我可能不看两次就无法理解它(我认为实际名称更具描述性,也许对读者更有意义) .

于 2013-02-13T21:42:24.823 回答