簡體   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