我有一个方法,我经常对变量执行逻辑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
答案 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