gpt4 book ai didi

ruby - 使用 .update 更新值

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:53 34 4
gpt4 key购买 nike

如果我们有一个散列并且我们想要更新其中一个值或键,我们可以轻松地使用 .update 方法,如下所示

def foo(params)
params+=1
end

hsh = {:a=>1,:b=>2,:c=>3}

hsh.update(hsh) do |key,oldVal|
foo(oldVal)
end

p hsh

但是假设有一个新的 hash,我想将它的属性复制到另一个 hash 中并将值加一。我将如何做到这一点?这是我的尝试

def foo(params)
params+=1
end
new_hsh = {:a=>1,:b=>2,:c=>3}
hsh = {}
hsh.update(new_hsh) do |key,value,newVal|
newVal = foo(value)
end

p hsh

输出 {:a=>1,:b=>2,:c=>3}。所以它复制了 new_hsh,但没有更新 value

根据文档

Adds the contents of other_hash to hsh. If no block is specified, entries with duplicate keys are overwritten with the values from other_hash, otherwise the value of each duplicate key is determined by calling the block with the key, its value in hsh and its value in other_hash.

所以它像文档所说的那样进行复制..但是我该如何更新它呢?

谢谢

编辑

尝试过

def foo(params)
params+=1
end
new_hsh = {:a=>1,:b=>2,:c=>3}
hsh = {}
hsh.update(new_hsh) do |key,value,newVal|
foo(newVal)
end

p hsh

最佳答案

这是另一个答案。这有效但也修改了 new_hsh。但是你需要在 hsh 上调用更新之前设置 hsh = new_hsh。

def foo(params)
params+=1
end

new_hsh = {:a=>1,:b=>2,:c=>3}
hsh = new_hsh
hsh.update(hsh) do |key,value|
hsh[key] = foo(value)
end

p hsh

关于ruby - 使用 .update 更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39207068/

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