我正在编写一个调用两个可为 null 的 bool API 的函数。如果任一 API 返回 true,我的函数应该返回 true。如果两者都返回 false,我的函数应该返回 false。否则,我的函数应该返回 null。换句话说:
true, true -> true
true, false -> true
true, null -> true
false, false -> false
false, null -> null
null, null -> null
有没有一种简单/优雅的方式来写这个?显然,像这样的 if-else 链可以工作,但我认为它相当困惑,尤其是因为您必须考虑到 null
是一个虚假值。
if ($cond1 || $cond2) {
return true;
} else ($cond1 === false && $cond2 === false) {
return false;
} else {
return null;
}
最佳答案
坚持您的建议。一个改进点是您不需要 if - else
分支,因为您正在返回。您只需要两个 if
:
function evaluate(?bool $cond1, ?bool $cond2): ?bool
{
if ($cond1 || $cond2) {
return true;
}
if ($cond1 === false && $cond2 === false) {
return false;
}
return null;
}
关于php - 编写此逻辑的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65891920/