ruby - Ruby 是否有 nil 值的安全导航运算符的语法,就像在 Groovy 中一样?

标签 ruby null operators

在 Groovy 中,有一个很好的语法来处理空值。

例如,我可以做一个 if 语句:

if (obj1?.obj2?.value) {

}

这不会抛出 NullPointerException,即使 obj1 为 null(它的计算结果为 false)。

这是非常方便的东西,所以想知道是否有我错过的 Ruby 等价物。

最佳答案

在 Rails 应用程序中有 Object#try

所以你可以这样做

obj1.try(:obj2).try(:value)

或者用一个 block (如下面的评论所述)

obj.try {|obj| obj.value}

更新

在 ruby​​ 2.3 中有这样的运算符:

obj&.value&.foo

这与 obj && obj.value && obj.value.foo 相同

关于ruby - Ruby 是否有 nil 值的安全导航运算符的语法,就像在 Groovy 中一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11164004/

相关文章:

ruby-on-rails - 如何使用 Ruby/Rails 将购买仅限于美国的 IP 地址?

javascript - 给定一个特定日期,是否有一种方法可以在自由文本文档中搜索该日期,而不知道该日期以哪种格式编写?

java - 利用 try catch block 而不是重复进行空检查

python - 在 Python 与 C 中打印空字符 ("\x00"

php - 使用 PHP 从 MySQL 中删除 NULL 值的问题

c - 单行中的前/后增量递减评估

c# - 为什么我们的 C# 图形代码不再工作了?

ruby-on-rails - Elastic Beanstalk 不为 Ruby on Rails 加载 Assets

ruby-on-rails - ruby rails : How to store form data

c# - 定义一个运算符并在多个地方使用它?