如果x if y
为真,我想运行z
,如果z为假,我想x unless y
。
最常用的方法是什么?我能想到的最好的是:
x if z ? y : !y
答案 0 :(得分:6)
试试这个:
x if !!y == !!z
这是用于强制转换为布尔值的标准Ruby习惯用法。如果y
和z
已经是布尔值,那么您只需执行以下操作:
x if y == z
答案 1 :(得分:4)
使用xor运算符,然后否定它:
x unless (!y ^ !z)
根据Victor的建议进行了更正,因为不是true
,false
或nil
的事情可能与^
有关。
答案 2 :(得分:1)
这似乎是一种令人困惑的思考方式。对我来说,更清晰的表述(Ruby-ish或其他)是
x if (z and y) or (not z and not y)