在ruby中创建哈希并更新嵌套键

时间:2018-10-22 13:33:13

标签: ruby-on-rails ruby hash

我之所以问这个问题,是因为我在使用红宝石中的哈希值时遇到了一些奇怪的事情,而我无法弄清为什么会这样。

我使用 product 方法在ruby中创建了一个嵌套哈希 前-

  abc = ["a", "b", "c", "d"]
  efg = ["l", "m","n","o","p"]
  hashed  = Hash[abc.product([Hash[efg.product([0])]])]

上面的代码创建如下的哈希:-

  hashed = {
             "a"=>{"l"=>0, "m"=>0, "n"=>0, "o"=>0, "p"=>0},
             "b"=>{"l"=>0, "m"=>0, "n"=>0, "o"=>0, "p"=>0},
             "c"=>{"l"=>0, "m"=>0, "n"=>0, "o"=>0, "p"=>0},
             "d"=>{"l"=>0, "m"=>0, "n"=>0, "o"=>0, "p"=>0}
           }

我面临的问题是,当我尝试更新 a 键中的 m 键上的值时。

  hashed["a"]["m"] += 2

它正在更新每个键[a,b,c,d]中所有 m 的值。

我进行了搜索,但未找到任何与之相关的信息。谁能解释我为什么会这样。

ruby​​版本:- ruby​​ 2.4.2p198(2017-09-14修订版59899)[x86_64-linux]

0 个答案:

没有答案