From: Kristof Bastiaensen Date: 2004-05-17T20:34:05+09:00 Subject: RCR: More enumerator functionality Hi, I would like to know your opinion about the following idea's. (It is actually are two RCR's) (1)* Enumerable::filter and Enumerable::enum_filter filter([[method = :each], *args, ] block) yield values for which block returns true 3.filter(:times, &lambda{ |i| i[0] == 0 }) do |n| puts "%i is even" % n end => 2 is even composers = %W(Brahms Berlioz Chopin) composers.filter(&lambda { |i| i[0] == ?B }) do |c| puts "composer with B: #{c}" end => composer with B: Brahms => composer with B: Berlioz and now the fun stuff (turning into an enum): 5.enum_filter(:times){ |i| i[0] == 0 }.collect => [2, 4] (2)* Enumerable::Enumerator takes a optional block powers = 4.enum_for(:times){ |i| i * i } powers.collect => [0, 1, 4, 9] Thanks, Kristof