我想知道是否可以使用帖子ruby use array tvalues to index nested hash of hash中所述的密钥数组来访问哈希值。我的目标不仅仅是访问此值,而是更改此值。 据我了解
keys.inject(hash, :fetch)
返回由key-array确定的hash-value的值,而不是它的引用。如何修改此值?
我知道修改一个对象而不是制作一个副本并使用不可变对象是一种糟糕的风格,但在一些情况下,这样做很简单。
非常感谢。
答案 0 :(得分:1)
使用除最后一个键之外的所有键来获取嵌套最深的Hash,然后使用最后一个键正常分配。
keys[0...-1].inject(hash, :fetch)[keys.last] = value
Ruby没有引用,因此您无法直接重新分配值。相反,你必须重新分配对象指针,这意味着上升一级嵌套。