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"
有没有办法在不知道存储键值的路径的情况下访问 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"