def fib
tab = [1,1]
loop do
yield tab.last
tab << tab[-1] + tab[-2]
end
end
p enum_for(:fib).take(10).each {|a| puts a}
Mam pytanie co do takiego kodu. enum_for przekształca tą metodę na enumerator. Czy yield odnosi się do pierwszego bloku danego do dowolnej metody enumeratora?
Edit:
def fib
tab = [1,1]
loop do
yield tab.last
tab << tab[-1] + tab[-2]
end
end
p enum_for(:fib).take_while {|a| a < 100}
Czy w tym przypadku po tym jak kolejny element jest większy od 100 to ten yield rzuci wyjątkiem StopIteration?
Edit2:
Co jeśli tego yielda by tam nie było. Może on określa na jakim elemencie ma operować cały enumerator?