加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 01:52:41 所属栏目:百科 来源:网络整理
导读:我总是遇到这个 Ruby问题,我想写得更干净. var a can be nila.value can also be nila.value has possible true or false valueif (not a.nil?) (not a.value.nil?) a.value == false puts "a value is not available"else puts "a value is true"end 问题是
我总是遇到这个 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和false条件语句?

谢谢,我是一个Ruby新手

解决方法

Ruby on rails有一个名为try的扩展,它允许你编写:

if a.try(:value) == false

这很干净.没有尝试,你可以写

if a && a.value == false

如果a.value为nil,则不是false,所以可以:)

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

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

[更新:ruby2.3之后]

从ruby 2.3开始,版本更短:

if a&.value == false

这几乎相当于a.try(:value)(但是纯粹的ruby).区别:

>如果价值不存在,&amp ;.运算符将抛出,尝试将返回nil(优选与否?)(注意:尝试!也会抛出).>当级联尝试或&amp ;.他们也有不同的处理方式.这遵循以前的差异逻辑,尝试将返回nil,而&.将抛出因为false不知道没有方法:P

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读