私は次のルビコードを試しました。私は、これらの長さの単語に単語長のハッシュを返すと考えました。代わりに空です。私はruby add to array value
map = Hash.new
strings = ["abc","def","four","five"]
strings.each do |word|
map[word.length] ||= []
map[word.length] << word
end
にそれを変更した場合
map = Hash.new(Array.new)
strings = ["abc","def","four","five"]
strings.each do |word|
map[word.length] << word
end
はしかし、それは作業を行います。
最初のバージョンでは、デフォルト値が空の配列であるハッシュを作成するだけではありませんか?この場合、なぜ2つのブロックが異なる値を与えるのか分かりません。
これは奇妙です。最初の例では、 'map = Hash.new {| h、k | h [k] = []} ' –