繁体   English   中英

编写此逻辑的最简单方法

Simplest way to write this logic

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

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

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

怎么样

return ($cond1 ? $cond1 : $cond2);

您可以像这样删除else if块:

if ($cond1 || $cond2) {
    return true;
}

return !isset($cond1, $cond2) ? null : false; 

您可以将其简化为:

return ($cond1 || $cond2) ? true : (!isset($cond1, $cond2) ? null : false)

但这很难阅读和理解。

怎么样:

if($cond1 === true || $cond2 === true){ 
 return true; 
}else{ //check first and sec cond for falsing
    if($cond1 === false && $cond2 === false){
      return false; 
    }else{ //else null it
      return null; 
    }
}

鉴于您的规定(并假设每个参数是以下之一:null、true 或 false),您可以剃掉一个 smidgeon:

function foo($a, $b) {
    if($a || $b)                    return true;
    if([$a, $b] === [false, false]) return false;
}

下面似乎正在工作,我尝试使用 Javascript 进行逻辑处理,如下图所示

  function testMyConditions($c1, $c2) {
      return ($c1 === true || $2 === true) ? true:  ($c1 === null || $c2 === null ? null: false)
    }

 function testMyConditions($cond1, $cond2) { return ($cond1 === true || $cond2 === true) ? true: ($cond1 === null || $cond2 === null ? null: false) } function runTests($cond1, $cond2, $expected) { console.log($cond1, $cond2, $expected, $expected === testMyConditions($cond1, $cond2) ? '=> OK': '=> NOT OK') } runTests(true, true, true) runTests(true, false, true) runTests(true, null, true) runTests(false, false, false) runTests(false, null, null) runTests(null, null, null)

1 编写此AJAX调用的最简单方法

我需要向Web服务器“ http://examples.com/ajax”发送ajax请求,响应将是<div>的html,并将其插入到现有的<div id="holder"> 。 用javascript编写此代码的最简单,最小的方法是什么? 不使用jQuery? ...

2 编写重载的最简单方法

对于那些我真的不在乎用户以什么顺序输入参数以及类型总是不同的方法,写重载的最简单方法是什么? 例如: 现在,我希望您可以以任何可能的方式调用该方法,例如: 除了重复一遍又遍地重新排列方法并重新排列参数之外,真的没有别的方法吗? 当您为参数指定默认值并且在调用方法时需要 ...

3 编写和读取XML的最简单方法

我想知道在Android中编写和解析XML文件的最简单方法是什么。 我的要求很简单。 示例文件类似于: 我只想通过ID检索项目并读取价格和数量。 我指的是使用XmlResourceParser来解析自定义编译的XML ,但是想知道是否有一种轻量级的方法来做一些微不足道的事情 ...

7 编写数学分数的最简单方法

我目前使用MathJax编写数学方程式,因为结果看起来很专业(更多信息请参见此处 )。 就像html语言一样。 问题是写一个方程式需要这么多代码: 有没有一种方法可以编写像(2y ^ 3)/ x ^ 4这样的数学方程,并使它们看起来像MathJax一样整齐,但是用更少的代码? ...

9 编写单位换算程序的最简单方法

我的问题是语言无关的。 我想编写一个简单的单位转换器程序。 有转换类型,根据类型有单位。 例如,如果我们将 Length 作为转换类型,那么就会有 Meter、Inch、Foot、Kilometer、Mile 等。 想象一下有两个下拉框——一个的方向是从,另一个是到。 每个下拉框下方都有一个文本框。 ...

10 在Android中编写/使用XML的最简单方法

我有一个示例XML文件,例如: 我想弄清楚如何我可以搜索uuid在此元素不同的事物的属性,做如确定一个子元素缺少像task_image的第一个元素和task_memo在第二个元素。 我也想将textcontent添加到task_memo 。 我尝试了以下代码,但无法正常工作: ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM