Да, есть причина.Если вы определяете хеш с помощью {}
и пытаетесь получить значение несуществующего ключа, вы получаете nil
hash = {}
#=> {}
hash[:a]
#=> nil
Но если вы определите его с помощью Hash.new
, вы можете установить определение для несуществующегосуществующий ключ
hash = Hash.new { Hash.new(false) }
#=> {}
hash[:a]
#=> {}
hash[:a][:a]
#=> false