gpt4 book ai didi

Ruby:用于检查 nil/false 条件语句的干净代码?

转载 作者:数据小太阳 更新时间:2023-10-29 07:08:57 26 4
gpt4 key购买 nike

我总是遇到这个Ruby问题,我想把它写得更干净。

var a can be nil
a.value can also be nil
a.value has possible true or false value

if (not a.nil?) && (not a.value.nil?) && a.value == false
puts "a value is not available"
else
puts "a value is true"
end

问题在于条件语句过于笨拙且难以阅读。如何改进检查 nilfalse 条件语句?

谢谢,我是 Ruby 新手

最佳答案

Ruby on rails 有一个叫做 try 的扩展,它允许你写:

 if a.try(:value) == false

非常干净。没有try,你可以只写

 if a && a.value == false

如果 a.value 为 nil,则它不是 false,所以没问题 :)

如果 a.value 可能没有定义(这会引发异常),我会这样写:

if a && a.respond_to?(:value) && a.value == false

[更新:在 ruby​​ 2.3 之后]

从 ruby​​ 2.3 开始有一个更短的版本:

if a&.value == false

这几乎等同于 a.try(:value)(但它是纯 ruby )。差异:

  • 如果 value 不存在,&. 运算符将抛出异常,try 将只返回 nil(是否可取?)(注意: try! 也会抛出)。
  • 当级联 try&. 时,它们对 false 的处理也不同。这从逻辑上遵循了之前的差异,try 将返回 nil,而 &. 将抛出异常,因为 false 不知道任何方法 :P

关于Ruby:用于检查 nil/false 条件语句的干净代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17851723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com