我想检查ruby中许多变量的状态。
但比
更优雅if (@op.wash == true || @op.wash == false) && (@op.communication == true || @op.communication == false)
它应该看起来像这样:
if [@op.wash, @op.communication] == [false, nil]
但这不起作用。有任何想法吗?
答案 0 :(得分:2)
如果所有这些变量都等于nil或false,则运行某些东西
这很简单
if [@op.wash, @op.communication].all?{|v| [false, nil].include?(v) }
或
if ([@op.wash, @op.communication] - [false, nil]).empty?
或其他几十种方式。在这种情况下,无障碍.none?
可能无法被击败:
if [@op.wash, @op.communication].none?