【发布时间】:2019-04-12 06:35:32
【问题描述】:
我想预先填充一个哈希,给定一个键数组和一个默认值(一个空数组)。我尝试使用Array 的#product 方法来做到这一点。
> hash = Hash[[:foo, :bar].product([[]])] # => {:foo=>[], :bar=>[]}
> hash[:foo].push(:baz) # => {:foo=>[:baz], :bar=>[:baz]}
我不明白为什么该值会应用于哈希中的所有键。相反,如果我使用 product 的返回值并直接从中填充哈希,我会得到预期的行为。
> [:foo, :bar].product([[]]) # => [[:foo, []], [:bar, []]]
> hash = Hash[[[:foo, []], [:bar, []]]] # => {:foo=>[], :bar=>[]}
> hash[:foo].push(:baz) # => {:foo=>[:baz], :bar=>[]}
我正在使用 ruby 2.3.6
【问题讨论】: