ruby-on-rails - 我怎样才能返回 nil 而不是丢失哈希键的错误?

标签 ruby-on-rails ruby hash key

我有一个散列,我正在寻找其中的某个键。但有时 hash 本身可能为 nil。在这种情况下,我不希望 hash["key"] 返回 undefined method '[]' for nil:NilClass 错误。我希望它返回 nil

在其他类似情况下,我可以使用 try,如下所示:nil.try(:key) => nil 但我无法获得相同的方法使用我的哈希。

换句话说,我正在寻找一种产生如下结果的方法:

> @hash = nil
> @hash.try(:["key"])
=> nil

最佳答案

各种 to_X 方法通常是将 nil 安静地转换为您真正感兴趣的空实例的便捷方法,而无需使用显式条件使您的逻辑复杂化。

在您的情况下,您可以利用 Hash#to_h返回哈希本身和 NilClass#to_h返回一个空哈希:

> hash = nil
> hash.to_h['key']
=> nil

> hash = { 'key' => 11 }
> hash.to_h['key']
=> 11

有时这比显式的 if 噪音小,有时则不然。

关于ruby-on-rails - 我怎样才能返回 nil 而不是丢失哈希键的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44479547/

相关文章:

ruby-on-rails - 从 windows-1251 到 UTF-8 Ruby on Rails

ruby-on-rails - Ruby on Rails 偷偷地将嵌套的哈希键从符号更改为字符串

indexing - 在给定位置的文本中查找最短的唯一字符串

ruby-on-rails - Rails 中 rake 的范围是什么

ruby-on-rails - Ruby on Rails Net::HTTP use_ssl 抛出 'undefined method'

javascript - 我怎样才能逃脱并删除“;”?从 Rails 提供的数据到 JavaScript

ruby-on-rails - 使用 Active Admin 访问 Active Storage 模型

ruby - 使用 ri 或 fastri for ruby​​ 查找类/方法的源文件

mysql - activerecord 3.2.2 与多个连接的关联问题

php - 如何使用 Android 客户端将密码散列到 PHP 服务器?