我从代码中获得以下输出:
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}
Run Code Online (Sandbox Code Playgroud)
为什么这里的代码有这个输出?
您将一次设置整个哈希值,作为一个原子操作.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"]
Run Code Online (Sandbox Code Playgroud)