我有一个变量val
,可以是nil
,true
或false
。我正在编写方法convert
,该方法将转换输入val
并根据val
返回以下值:
true
-> true
false
-> false
nil
-> true
我可以通过nil
检查来做到这一点,
def convert
val.nil? ? true : val
end
如何在没有nil
check的情况下进行转换?
答案 0 :(得分:7)
如果唯一可能的值为true
,false
和nil
,我可能会建议
def convert
val != false
end
尽管公平地说,这违反了您提到的该准则的精神。拥有可以是nil
或布尔值的值确实感觉像某种三态类型,将其更好地分解为一组更好命名的常量,甚至只是符号。
答案 1 :(得分:3)
另一种方式:
def convert(val)
[true, nil].include?(val)
end
输出:
> convert(true)
#=> true
> convert(nil)
#=> true
> convert(false)
#=> false