我有几个代码段,有几个分组的“或”条件,如下所示:
def some_method
first_var || second_var || false
end
如果有的话,避免这种情况的最佳方法是什么?我希望它保持紧凑和高效。我的猜测是,这种情况一如既往,但心中有一些东西一直在说必须有更好的方法。
答案 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_var
和second_var
为假,它会自动评估为假,休息看起来很不错:
def some_method
first_var || second_var
end
如果你在条件语句中使用some_method
而不是返回nil也将作为假,否则你的原始代码也是干净清晰的,除非你想要这么一些花哨的东西,但是我觉得这样会有点过头了
答案 2 :(得分:2)
您可以将其包装在数组中并使用any?
def some_method
[first_var, second_var].any?
end