gpt4 book ai didi

ruby - 在任意位置设置哈希值

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:07 25 4
gpt4 key购买 nike

我正在开发一个应用程序,我想在其中修改现有散列的一部分,如下所示:

{a: {b: {c: 23}}}

成为:

{a: {b: {c: [23]}}}

但是,要设置的确切键是动态的,并且在哈希中的深度未知。有没有办法在给定键数组的情况下在散列中设置值?我希望是这样的:

my_hash['a','b','c'] = new_value

通过递归从任意深度获取值很简单,但是由于遍历是对数据的副本而不是引用进行的,所以我不知道在遍历期间不重建整个数组的情况下设置值的方法。

最佳答案

除了语法 (my_hash['a','b','c']),下面会做你想做的

h = {a: {b: {c: { e: 23}}, d: 34}}
keys = ['a','b','c']

def replace_nested_value_by(h, keys, value)
if keys.size > 1
replace_nested_value_by(h[keys.first.to_sym], keys[1..-1], value)
elsif keys.size == 1
h[keys.first.to_sym] = value
end
end

puts h
replace_nested_value_by(h, keys, 42)
puts h

关于ruby - 在任意位置设置哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15744195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com