我从代码中得到以下输出:

arr = [1,2,3]
gdu = {}
gdu = {
      "b" => 4,
      "c" => arr,
      "d" => arr.map {|x| x * gdu["b"].to_i },
      "e" => gdu["b"].to_i
}
gdu.default = "value does not exit in hash gdu"
gdu # => {"b"=>4, "c"=>[1, 2, 3], "d"=>[0, 0, 0], "e"=>0}

为什么这里的代码有这个输出?

最佳答案

一次设置整个哈希值,作为一个原子操作。rho使用当前版本的gdu,这是一个空哈希。
要实现您的目标,请一步一步地分配值:

gdu = {}
gdu["b"] = 4
gdu["c"] = arr
gdu["d"] = arr.map { |x| x * gdu["b"] } # `to_i` is redundant
gdu["e"] => gdu["b"]

10-06 02:20