首页 > 解决方案 > 编写此逻辑的最简单方法

问题描述

我正在编写一个调用两个可为空的布尔 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;
}

标签: php

解决方案


坚持你的建议。改进的一点是你不需要if - else分支,因为你要返回。你只需要两个ifs:

function evaluate(?bool $cond1, ?bool $cond2): ?bool
{
    if ($cond1 || $cond2) {
        return true;
    }
    if ($cond1 === false && $cond2 === false) {
        return false;
    }
    return null;
}

推荐阅读