Brian Candler wrote: > On Wed, May 30, 2007 at 10:46:33PM +0900, SonOfLilit wrote: >> Sorry, found a bug, I'll need to make it into this: >> >> module Enumerable >> def serially(&b) >> a = [] >> self.each{|x| t = ([x].instance_eval(&b); a << b[0] unless b.empty?} >> # notice, relevance to "it" discussion that's currently going on, just >> btw >> end >> end > > Somehow I don't think you tested this :-) > > * You have mismatched parentheses > * You assign to t, but never use the value > * you call b twice, once with no arguments, and once with 0 as an argument > * b is a block, but you call #empty? on it > > Can you give an example of how this is supposed to be used? > > Brian. > I think I get his point. I wrote a little lib to try out my interpretation of what he is trying to do. a = (1..20) b = a.serially do select do |x| if x > 10 true else false end end collect do |x| "0x" + x.to_s end select do |x| if x == "0x15" false else true end end end puts b # generates 0x11 0x12 0x13 0x14 0x16 0x17 0x18 0x19 0x20 The lib is at http://xtargets.com/snippets/posts/show/69 -- Brad Phelan http://xtargets.com/snippets