我有一个如果-否则-声明,我想做更多的干燥.
if flag?
box? && ball?
else
box?
end
也许我还有另一个陈述,看起来像这样
if flag?
box? && ball?
else
box? && ball? && bat?
end
如何清理这些条件,使它们看起来更干燥?
我有一个如果-否则-声明,我想做更多的干燥.
if flag?
box? && ball?
else
box?
end
也许我还有另一个陈述,看起来像这样
if flag?
box? && ball?
else
box? && ball? && bat?
end
如何清理这些条件,使它们看起来更干燥?
为了简化这样的条件,有时可以详细地编写它们,然后按照De Morgan's laws的顺序一步一步地进行转换.
if flag?
box? && ball?
else
box?
end
可以写成
(flag? && box? && ball?) || (!flag? && box?)
因为在这两种情况下box?
都必须是true
,所以您可以在其他条件之前先判断.
box? && ((flag? && ball?) || (!flag?))
它可以转换为
box? && (!flag? || ball?)
可以按照相同的步骤转换另一个表达式:
if flag?
box? && ball?
else
box? && ball? && bat?
end
作为详细条件写入
(flag? && box? && ball?) || (!flag? && box? && ball? && bat?)
和转型
(box? && ball?) && ((flag?) || (!flag? && bat?))
最终得到了
box? && ball? && (flag? || bat?)