gpt4 book ai didi

ruby-on-rails - 如何转换嵌套哈希中的所有值?

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

我想将嵌套散列中的所有值转换为 utf8 兼容字符串。我最初认为这很容易,像 deep_apply 这样的东西应该可供我使用,但我无法在快速的谷歌和 SO 搜索中找到这么简单的东西。

我不想编写(维护)类似于 Change values in a nested hash 行的方法.是否有 native API 实现或速记可用于此,或者我是否必须编写自己的方法?

最佳答案

我最终实现了我自己的方法,这绝不是完美的,但适用于我的用例并且应该易于维护。贴在这里供大家引用

def deep_apply object, klasses, &blk
if object.is_a? Array
object.map { |obj_ele| deep_apply(obj_ele, klasses, &blk) }
elsif object.is_a? Hash
object.update(object) {|_, value| deep_apply(value, klasses, &blk) }
elsif klasses.any? { |klass| object.is_a? klass }
blk.call(object)
else
object
end
end

用法:

=> pry(main)> deep_apply({a: [1, 2, "sadsad"]}, [String, Integer]) { |v| v.to_s + "asd" }
=> {:a=>["1asd", "2asd", "sadsadasd"]}

关于ruby-on-rails - 如何转换嵌套哈希中的所有值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38068156/

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