使用函数填充Ruby哈希

Fat*_*per 2 ruby hash

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

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)

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

Ale*_*kin 5

您将一次设置整个哈希值,作为一个原子操作.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)