我总是遇到这个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
问题是条件语句太笨拙且难以阅读。
如何改进检查nil
and false
条件语句?
谢谢,我是 Ruby 新手
Ruby on Rails 有一个扩展名为try
它允许你写:
if a.try(:value) == false
这是非常干净的。没有try
,你可以写
if a && a.value == false
If 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)
(但是是纯红宝石)。差异:
- if
value
不存在,则&.
运算符会抛出,try
只会返回 nil (是否更好?)(注意:try!
也会抛出)。
- 级联时
try
or &.
他们还处理false
不同。这从逻辑上可以得出之前的差异,try
将返回零,而&.
会抛出,因为false
不知道有什么方法:P
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)