我从代码中得到以下输出:
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"]