如何使用最少的代码大的哈希散列

问题描述 投票:-3回答:1

我需要创建一个具有以下格式,其中速度和总的是局部变量散列的大的哈希:

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的,然后传递到需要的子散列的每个迭代变量?

ruby loops hash
1个回答
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

该代码是未经测试,但它应该工作开箱。

© www.soinside.com 2019 - 2024. All rights reserved.