是否有更好的Ruby或Rails习惯用于检查嵌套哈希中是否存在值?

AKW*_*KWF 2 ruby hash ruby-on-rails

如果值:

myhash['first_key']['second_key']
Run Code Online (Sandbox Code Playgroud)

存在,然后我需要得到它.但'second_key'可能根本不存在,my_hash如果不是,我不希望该行抛出异常.

现在我用一个丑陋的条件包装整个东西,如下:

if myhash['first_key'].present? and myhash['first_key']['second_key'].present?
  ...
end
Run Code Online (Sandbox Code Playgroud)

我敢肯定必须有更简单的东西.

var*_*tis 8

你可以随时使用try:

hsh.try(:[], 'first_key').try(:[], 'second_key')
Run Code Online (Sandbox Code Playgroud)

仅供参考:如果您正在进行大量这些检查,您可能需要重构代码以避免这些情况.

  • 是的,Rails方法.OP将问题标记为RoR. (3认同)