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