Я читаю один ресурс, объясняющий, как Enumerators можно использовать в качестве генераторов, что в качестве примера:
triangular_numbers = Enumerator.new do |yielder|
number = 0
count = 1
loop do
number += count
count += 1
yielder.yield number
end
end
print triangular_numbers.next, " "
print triangular_numbers.next, " "
print triangular_numbers.next, " "
Я не понимаю цели yielder
здесь, какое значение он принимает и как этот код выполняется параллельно с остальной частью программного кода.
Выполнение начинается сверху и приостанавливается, вероятно, когда блок "дает" значение для моего кода.
Может кто-нибудь объяснить, как все это выполняется в глазах компилятора?