From: Tobias Reif Date: 2002-01-13T01:28:34+09:00 Subject: Re: Changes to block behavior in ruby 1.6.6 Niklas Frykholm wrote: > So blocks have to be passed explicitly to sub-methods, like this: > > def a; yield 1; end > def b(&p); a(&p); end > b {|x| puts x} > I'm on Win, and have 1.6.5 only. Does this ----------8<---------- def upto limit,modifier=:default number,step = case modifier when :even then [2,2] when :odd then [1,2] when :default then [1,1] end while number <= limit yield number number += step end end upto 7 do |number| print number end print "\n" upto 7,:even do |number| print number end print "\n" upto 7,:odd do |number| print number end # 1234567 # 246 # 1357 ----------8<---------- run in 1.6.6? or do I have to write ----------8<---------- def upto limit,modifier=:default,&block number,step = case modifier when :even then [2,2] when :odd then [1,2] when :default then [1,1] end while number <= limit block.call number number += step end end upto 7 do |number| print number end print "\n" upto 7,:even do |number| print number end print "\n" upto 7,:odd do |number| print number end # 1234567 # 246 # 1357 ----------8<---------- then? TIA, Tobi -- http://www.pinkjuice.com/