布尔逻辑问题:我可以将这 4 个 if 语句强制转换为单个布尔语句吗?
我有一个布尔逻辑问题。我有以下 if 语句,它们应该能够合并为单个布尔表达式。请帮忙。我在这上面花了太多时间,而且我实际上很羞于问我的同事。
if (denyAll == true & allowOne == false) return false;
if (denyAll == true & allowOne == true) return true;
if (denyAll == false & allowOne == false) return false;
if (denyAll == false & allowOne == true) return true;
return true; //should never get here
我确信有一个优雅的解决方案。
谢谢
I have a boolean logic question. I have the following if statements that should be able to be coalesced into a single boolean expression. Please help. I've spent way too much time on this and I'm actually too ashamed to ask my co-workers.
if (denyAll == true & allowOne == false) return false;
if (denyAll == true & allowOne == true) return true;
if (denyAll == false & allowOne == false) return false;
if (denyAll == false & allowOne == true) return true;
return true; //should never get here
I'm sure there is an elegant solution.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(7)
请止步禁区2024-12-08 01:21:57
为了补充其他答案,一些基本提示:
您可以使用 if (allowOne)
而不是 if (allowOne == true)
或 if (!allowOne)< /code> 而不是
if (allowOne == false)
另外,对于条件操作,您通常应该使用 &&
运算符而不是 &< /code>,因为这允许短路。例如,在表达式
if (denyAll && !allowOne)
中,如果 denyAll
为 false,则不会费心评估 !allowOne
,因为该表达式已经是错误的。
此外,如果您的方法像这里一样返回一个 bool
,那么您通常可以将表达式简化为 return 语句本身。例如:
if (!denyAll && allowOne)
return true;
else
return false;
简化为:
return (!denyAll && allowOne);
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
return allowedOne;
可以解决问题吗?Would
return allowOne;
do the trick?