gpt4 book ai didi

ruby - 如何重构旨在将哈希符号更改为字符串的 Ruby 代码?

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

我刚刚写了这段代码,但我对此并不十分满意。

data = {}
options.each{ |k,v| data.merge!({k.to_s => v}) }

基本上我有:

{:a => "something", :b => "something else", :c => "blah"}

...我想要...

{"a" => "something", "b" => "something else", "c" => "blah"}

...为了将它发送到由于某种原因不处理符号的 gem。在我写的代码中,选项是原始哈希,数据是更新后的哈希,但如果我只能使用 1 个变量,那就更好了。

你们会如何重构我的代码?

最佳答案

data = Hash[options.map{ |k,v| [k.to_s,v] }]

对于足够大的哈希,答案之间没有显着差异

require 'benchmark'
options = Hash[('aaaa'..'zzzz').map{|i| [i.to_sym,i]}]
Benchmark.bm(100) do |x|
x.report("map") {Hash[options.map{ |k,v| [k.to_s,v] }] }
x.report("zip") {Hash[options.keys.map(&:to_s).zip(options.values)]}
x.report("inject") {options.inject({}) { |h, (k, v)| h[k.to_s] = v; h }}
end

user system total real
map 3.490000 0.090000 3.580000 ( 4.049015)
zip 3.780000 0.020000 3.800000 ( 3.925876)
inject 3.710000 0.110000 3.820000 ( 4.289286)

关于ruby - 如何重构旨在将哈希符号更改为字符串的 Ruby 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3370140/

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