Вот хитроумный трюк, чтобы включить автообнаружение хеша в рубине (взято из граней):
  # File lib/core/facets/hash/autonew.rb, line 19
  def self.autonew(*args)
    leet = lambda { |hsh, key| hsh[key] = new( &leet ) }
    new(*args,&leet)
  end
Хотя это работает (конечно), я нахожу это действительно расстраивающим, что я не могу понять, как это делают два лайнера, что он делает.
leet помещается как значение по умолчанию. Так что тогда просто доступ к h['new_key'] каким-то образом вызывает его и создает 'new_key' => {}
Теперь я ожидаю, что h['new_key'] вернет объект значения по умолчанию, а не его оценку. То есть 'new_key' => {} не создается автоматически. Итак, как на самом деле получать звонки? Особенно с двумя параметрами?
