[英]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;
}
}
基本上要點是,如果type
或d
沒有失業,則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.