繁体   English   中英

将此 if-then 逻辑转换为 boolean 表达式?

[英]Turn this if-then logic into a boolean expression?

我在使这段代码更简洁方面有点放屁(最好是单个 boolean 表达式)

这是我的代码:

                    if (d.Unemployed)
                    {
                        if (type.Unemployed)
                        {
                            tmp.Unemployed = true;
                        }
                        else
                        {
                            tmp.Unemployed = false;
                        }
                    }
                    else
                    {
                        if (type.Unemployed)
                        {
                            tmp.Unemployed = false;
                        }
                        else
                        {
                            tmp.Unemployed = true;
                        }
                    }

基本上要点是,如果typed没有失业,则tmp应设置为未失业。

怎么样:

tmp.Unemployed = type.Unemployed == d.Unemployed;

如果我们按照代码构造一个真值表,我们得到

d  | type | tmp
---+------+----
1  |   1  |  1
---+------+----
1  |   0  |  0
----+-----+----
0  |   1  |  0
----+-----+----
0  |   0  |  1

以上等价于xor或运算的否定。

tmp = not (d xor type)

如果语言没有xor运算符,我们可以在 boolean 值上使用!=

tmp = ! (d != type);
// or
tmp = d == type;

考虑到这给你造成了多少“大脑放屁”,我会考虑使用一个命名良好的变量,以避免将来再次通过这个心理过程进行 go。 像这样的东西:

isTmpUnemployed = (type.Unemployed == d.Unemployed);
tmp.Unemployed = isTmpUnemployed;
tmp.Unemployed = d.Unemployed || type.Unemployed ? !tmp.Unemployed : null;

上述代码的意思是“都失业或都没有失业”。 因此,不是(A xor B):

 tmp.Unemployed = ! ( D.Unemployed ^ type.Unemployed)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM