From: Maarten Mortier Date: 2008-12-09T00:07:46+09:00 Subject: filtering blocks Is it possible to filter blocks, online, in an elegant way? for instance if I have the block class Integer def divisors (1..self).each{ |i| yield i if self % i == 0 } end end and I want to pass this block through an 'online' filter. I want to do something elegant like 10.divisors.odd{ |n| puts n } # instead of 10.divisors{ |n| puts n if n.odd? } #, which is pretty much the same as 10.divisors{ |n| yield n if n.odd? }{|n| puts n} I suppose it's not possible at all to treat a block as an object in this manner? If so, suppose I want to use a generic filter that takes a block and a condition as its arguments, and returns the block of each elements for which a condition is fulfilled? # pseudo def filter (block, condition) block do |s| yield s if s.condition end end How would I do anything like this, without using arrays as inbetweens? Am I again trying to treat blocks wrongly as objects, is it at all possible to 'operate' through them in this way? I'm new to ruby so this might be a bit stupid. I was just experimenting and couldn't find an elegent, modular manner of filtering blocks run-time in a 'chain-like' manner, without needlessly compressing them to arrays in between. I got this when googling, btw: www.rubyfilter.com :) -- Posted via http://www.ruby-forum.com/.