November 2012
Intermediate to advanced
888 pages
54h 46m
Polish
Podstawowe metody blokowe, oferowane przez standardową bibliotekę języka Ruby, okazują się w danym zastosowaniu niewystarczające. Chcielibyśmy zdefiniować własne metody klasyfikowania elementów stanowiących wynik enumeracji (jak Enumerable#detect czy Enumerable#find_all) i kolekcjonowania tych elementów (jak Enumerable#collect).
Metodę dokonującą przeszukiwania lub klasyfikowania elementów będących wynikiem enumeracji najłatwiej jest zaimplementować za pomocą iteratora inject. W ten sposób łatwo można stworzyć własne wersje metod w rodzaju detect i find_all:
module Enumerable def find_no_more_than(limit) inject([]) do |a,e| a << e if yield e return a if a.size ...