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 问题是条件语句太笨拙而且难以阅读. 谢谢,我是一个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).区别: >如果价值不存在,& ;.运算符将抛出,尝试将返回nil(优选与否?)(注意:尝试!也会抛出).>当级联尝试或& ;.他们也有不同的处理方式.这遵循以前的差异逻辑,尝试将返回nil,而&.将抛出因为false不知道没有方法:P (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 关于如何为Flash / Flex / HTML5开发的未来做准备的任何想法
- ruby-on-rails – 如何使用elasticsearch和索引对象之间的关
- C cin读取字符串到int类型返回0
- ruby-on-rails – 登录Sidekiq工作人员
- [推荐] SQLite可视化管理工具汇总
- Array与ArrayCollection的区别
- ios – Xcode 7,Swift 2.0,Carthage
- 在Swift中导航标题很长时,避免为后退按钮显示“后退”
- ruby-on-rails – Rails中的大小,长度和数量
- postgresql – DataGrip Postgres SSL错误:sun.security.v