{"a"=>{"b"=>{"c"=>nil}}} 如何将散列中的所有 nil 替换为 "",以便散列变为: {"a"=>-6ren">
gpt4 book ai didi

ruby - 如何递归地用 ""替换 ruby​​ 哈希中的所有 nil 值?

转载 作者:数据小太阳 更新时间:2023-10-29 06:38:03 25 4
gpt4 key购买 nike

str = "<a><b><c></c></b></a>"
hash = Hash.from_xml(str)
# => {"a"=>{"b"=>{"c"=>nil}}}

如何将散列中的所有 nil 替换为 "",以便散列变为:

{"a"=>{"b"=>{"c"=>""}}}

最佳答案

这里是递归的方法,不改变原来的hash。

代码

def denilize(h)
h.each_with_object({}) { |(k,v),g|
g[k] = (Hash === v) ? denilize(v) : v.nil? ? '' : v }
end

示例

h = { "a"=>{ "b"=>{ "c"=>nil } } }
denilize(h) #=> { "a"=>{ "b"=>{ "c"=>"" } } }

h = { "a"=>{ "b"=>{ "c"=>nil , "d"=>3, "e"=>nil}, "f"=>nil } }
denilize(h) #=> { "a"=>{ "b"=>{ "c"=>"" , "d"=>3, "e"=>""}, "f"=>"" } }

关于ruby - 如何递归地用 ""替换 ruby​​ 哈希中的所有 nil 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23903055/

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