具有多个逻辑AND的重构方法

时间:2014-02-26 20:38:27

标签: ruby

我有一个方法,我经常对变量执行逻辑AND,它可以重构吗?这是一个2部分的问题。

  • 是否有短路方式var = var && condition
  • 有没有更好的方法可以根据多个条件编写它并且仍然只返回一个布尔值?

我希望有类似于+=类的东西。

def my_method
  var = true

  if condition
    var = var && cond1
  end

  if other_condition
    var = var && cond2
  end

  var
end

2 个答案:

答案 0 :(得分:2)

  • 是否有短路方式做var = var&&条件?

    var &&= condition
    
  • 有没有更好的方法根据多个条件编写这个并且仍然只返回一个布尔值?

    def my_method
      (cond1 || !condition      ) &&
      (cond2 || !other_condition)
    end
    

    编辑。 p11y的评论是对的。

    <击> 如果你不喜欢它,你也可以使用关键字这样写:

    def my_method
      (cond1 if condition      ) and
      (cond2 if other_condition)
    end
    

    <击>

答案 1 :(得分:2)

我会使用语句修饰符:

def my_method
  res = true
  res &&= cond1 if condition
  res &&= cond2 if other_condition
  res
end