On 7/8/06, William James <w_a_x_man / yahoo.com> wrote: > Daniel Schierbeck wrote: > > Why haven't I thought of this before? > > > > class Terminal > > include Enumerable > > > > def each(&block) > > while input = gets > > block.call(input.chomp) > > end > > end > > def each > while input = gets > yield input.chomp > end > end Equivilent code, actually. It's a case of "you say tomaTOE I say tomAHto" Personally, I tend to prefer the 'block.call' because you explicitly say you're passing in a block in the definition of the method, so if someone is reading your code they can easily tell that the method takes a block. In the case of yield you might need to read through a good bit of code before you find out that the method takes a block. Phil