Ruby:避免多个“或”语句?

时间:2014-04-29 15:14:21

标签: ruby performance optimization

我有几个代码段,有几个分组的“或”条件,如下所示:

def some_method
 first_var || second_var || false
end

如果有的话,避免这种情况的最佳方法是什么?我希望它保持紧凑和高效。我的猜测是,这种情况一如既往,但心中有一些东西一直在说必须有更好的方法。

3 个答案:

答案 0 :(得分:5)

如果您不想添加|| false,但又不希望退回nil,则可以执行以下操作:

def some_method
  !!(first_var || second_var)
end

这样,如果(first_var || second_var)的返回值为nil,则会返回false

!!true
# => true
!!false
# => false
!!nil
# => false

答案 1 :(得分:2)

您可以做的是删除不必要的false,因为如果first_varsecond_var为假,它会自动评估为假,休息看起来很不错:

def some_method
 first_var || second_var
end

如果你在条件语句中使用some_method而不是返回nil也将作为假,否则你的原始代码也是干净清晰的,除非你想要这么一些花哨的东西,但是我觉得这样会有点过头了

答案 2 :(得分:2)

您可以将其包装在数组中并使用any?

  def some_method
    [first_var, second_var].any?
  end