Ruby 中是否有一个函数可以遍历动态多级哈希,其中已知的只是所需的密钥?

Is there a function in Ruby to traverse dynamic multi level hashes where all that is known is the required key?

有没有办法在不知道存储键值的路径的情况下访问 my_key 值 使用现成的 ruby 方法?

你会看到下面的两个场景将 my_key 存储在不同的位置 地方。这些哈希结构将始终是动态的,因此您无法预测 访问 my_key 的确切路径,但密钥名称始终是已知的。我已经看到 .dig 这非常接近所需的只是增加了能够遍历多级哈希和数组的功能,就像通配符一样有效。

scenario_1 = {
  level_1a: {
    level2: [
      {
        level3: {
          my_key: "here"
        }
      }
    ]
  },  
  level_1b: "test"
}

scenario_2 = {
  level_1a: {
    my_key: "here"
  },  
  level_1b: "test"
}

如果无法通过开箱即用ruby;是否有任何已知的 gem 可以添加此功能,或者您认为最好只实现您自己的自定义递归深度扫描方法?

dig-deep gem 好像是你要找的:

require 'dig-deep'

scenario_1.dig_deep(:my_key)
=> "here"
scenario_2.dig_deep(:my_key)
=> "here"