gpt4 book ai didi

ruby - 递归地将所有数字字符串转换为 Ruby 哈希中的整数

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

我有一个随机大小的散列,它可能有类似 "100" 的值,我想将其转换为整数。我知道我可以使用 value.to_i if value.to_i.to_s == value 来做到这一点,但我不确定我将如何在我的散列中递归地做到这一点,考虑到一个值可以是一个字符串,或一个数组(哈希或字符串),或另一个哈希。

最佳答案

这是一个非常简单的递归实现(尽管必须同时处理数组和散列会增加一些技巧)。

def fixnumify obj
if obj.respond_to? :to_i
# If we can cast it to a Fixnum, do it.
obj.to_i

elsif obj.is_a? Array
# If it's an Array, use Enumerable#map to recursively call this method
# on each item.
obj.map {|item| fixnumify item }

elsif obj.is_a? Hash
# If it's a Hash, recursively call this method on each value.
obj.merge( obj ) {|k, val| fixnumify val }

else
# If for some reason we run into something else, just return
# it unmodified; alternatively you could throw an exception.
obj

end
end

而且,嘿,它甚至可以工作:

hsh = { :a => '1',
:b => '2',
:c => { :d => '3',
:e => [ 4, '5', { :f => '6' } ]
},
:g => 7,
:h => [],
:i => {}
}

fixnumify hsh
# => {:a=>1, :b=>2, :c=>{:d=>3, :e=>[4, 5, {:f=>6}]}, :g=>7, :h=>[], :i=>{}}

关于ruby - 递归地将所有数字字符串转换为 Ruby 哈希中的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8877737/

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