作者:詹建红_335 | 来源:互联网 | 2023-05-24 15:16
我从一组键指定的Access嵌套哈希元素中学到了)
如果我有一个数组
array = ['person', 'age']
我有一个嵌套的哈希
hash = {:person => {:age => 30, :name => 'tom'}}
我可以通过使用获得年龄的价值
array.inject(hash, :fetch)
但是,如何使用键数组将age的值设置为40?
1> August..:
您可以获取包含数组中最后一个键的哈希值(通过删除最后一个元素),然后设置键的值:
array.map!(&:to_sym) # make sure keys are symbols
key = array.pop
array.inject(hash, :fetch)[key] = 40
hash # => {:person=>{:age=>40, :name=>"tom"}}
如果您不想修改阵列,可以使用.last
和[0...-1]
:
keys = array.map(&:to_sym)
key = keys.last
keys[0...-1].inject(hash, :fetch)[key] = 40