我需要创建一个具有以下格式,其中速度和总的是局部变量散列的大的哈希:
hash_1 = {
a: {
category_1: {
length: a["category_1"].length,
amount: category_1_a_total,
speed: category_1_a_speed
},
category_2: {
length: a["category_2"].length,
amount: category_2_a_total,
speed: category_2_a_speed
}
},
# ~ 10 more hashes to follow b..i
}
我有充分的哈希模板大,使得代码难以阅读。有没有一种方法来遍历每个子哈希为我打造hash_1
的,然后传递到需要的子散列的每个迭代变量?
FWIW,下面的代码应该做你的要求。尽管如此,所有的评论说,你正在做的是错的的确是非常正确的。
我张贴仅用于教育目的的片段。
b = binding
hash =
(?a..?i).map do |key|
[
key.to_sym,
(1..2).map do |i|
[
:"category_#{i}",
{
length: b.local_variable_get(key)["category_#{i}"].length,
amount: b.local_variable_get("category_#{i}_#{key}_total"),
speed: b.local_variable_get("category_#{i}_#{key}_speed")
}
]
end.to_h
]
end.to_h
该代码是未经测试,但它应该工作开箱。