1, "c" => 2,"b"=> 3}, 1) # => {"a" => 2, "c" => 3,-6ren">
gpt4 book ai didi

ruby - 通过 x 修改现有哈希值并返回哈希

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:03 24 4
gpt4 key购买 nike

我正在尝试将散列的所有值递增给定数量并返回散列。我期待:

add_to_value({"a" => 1, "c" => 2,"b"=> 3}, 1) 
# => {"a" => 2, "c" => 3,"b"=> 4}

我在想:

def add_to_value(hash, x)
hash.each {|key,value| value + x}
end

返回:

{"a"=>1, "b"=>3, "c"=>2}

为什么哈希是按字母顺序排序的?

最佳答案

你非常接近,不需要任何额外的 gem :

def add_to_value(hash, x)
hash.each {|key,value| hash[key] += x }
end

只需迭代散列并逐个更新每个值。 #each 返回正在迭代的对象,因此结果将是原始哈希,已就地修改。

如果您想要原始散列的副本,您也可以很容易地做到这一点:

def add_to_value(hash, x)
hash.each.with_object({}) {|(key, value), out| out[key] = value + x }
end

这将定义一个新的空散列,将其传递给 block ,并在其中收集新值。新哈希从 #with_object 返回,因此从 add_to_value 返回。

关于ruby - 通过 x 修改现有哈希值并返回哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25154516/

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