Почему Enumerator.new требует объект «уступающий»?

Рассмотрим простой перечислитель, подобный этому:

natural_numbers = Enumerator.new do |yielder|
  number = 1
  loop do
    yielder.yield number
    number += 1
  end
end

Мой вопрос: почему Ruby требует, чтобы мы вызывали yield на объекте уступки? Другими словами: почему мы не можем заменить число yielder.yield на число доходности ? В этом примере это выглядело бы так же, если бы это было разрешено. Есть ли примеры нетривиального использования yielder? Если да, то можете ли вы его дать? Если нет, то какова цель уступки?

Спасибо.

5
задан Mladen Jablanović 27 December 2011 в 09:46
поделиться