我正在编写一个调用两个可为空的布尔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
s:
function evaluate(?bool $cond1, ?bool $cond2): ?bool
{
if ($cond1 || $cond2) {
return true;
}
if ($cond1 === false && $cond2 === false) {
return false;
}
return null;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句