November 2012
Intermediate to advanced
888 pages
54h 46m
Polish
Zdefiniowana jest pewna sekwencja liczb (być może nieskończona), po której należy zorganizować iterację w taki sam sposób, jak iteruje się tablice lub zakresy.
Tworzymy funkcję-generator, która za pomocą metody yield udostępnia kolejne elementy generowanej sekwencji, na przykład tak:
def fibonacci(limit = nil)
seed1 = 0
seed2 = 1
while not limit or seed2 <= limit
yield seed2
seed1, seed2 = seed2, seed1 + seed2
end
end
fibonacci(3) { |x| puts x }
# 1
# 1
# 2
# 3
fibonacci(1) { |x| puts x }
# 1
# 1
fibonacci { |x| break if x > 20; puts x }
# 1
# 1
# 2
# 3
# 5
# 8
# 13
Generator sekwencji liczb funkcjonuje podobnie do iteratora tablicy lub innej struktury danych. W przeciwieństwie ...