代码之家  ›  专栏  ›  技术社区  ›  rasx

布尔连接?这个模式的真正术语是什么?

  •  1
  • rasx  · 技术社区  · 15 年前

    请考虑以下功能体:

    var isValidated = true;
    $(selector1).each(function(){
        //do validation with local f()...
        isValidated = f() && isValidated;
    });
    
    $(selector2).each(function(){
        //do validation with local f()...
        isValidated = f() && isValidated;
    });
    
    $(selector3).each(function(){
        //do validation with local f()...
        isValidated = f() && isValidated;
    });
    
    return isValidated;
    

    我对进度的描述 isValidated 是布尔连接——但必须有一个官方的计算机科学术语。它是什么?为了澄清,这里的想法是让每个 $() 块运行---但是当这些块中的任何一个具有验证失败时,此失败的结果必须返回 false 所有街区( true && true && false == false )所以,像许多程序员一样,我正在使用某种模式,但我们常常不知道它叫什么。那么这个模式类似于什么有用的东西吗?

    3 回复  |  直到 15 年前
        1
  •  10
  •   Traveling Tech Guy    15 年前
        2
  •  3
  •   Brian Moeskau    15 年前

    isValidated = isValidated  && f();
    

    确保您仍然运行每个f()的唯一原因是,如果它们正在做一些事情,比如为用户标记带有错误的UI字段。如果只是验证,那么在外部检查为假时就不需要运行它们。

        3
  •  1
  •   Matt Gillooly    15 年前

    我假设从.each()的使用中,您还可以访问.inject()函数,当您从可枚举的值构建单个值时,我建议使用该函数。

    function validated(a) {
      return a.inject(true, function(acc, el){ return(acc && f()); });
    }
    
    return validated($(selector1)) && validated($(selector2)) && validated($(selector3));