From: dblack@... Date: 2006-09-25T02:03:14+09:00 Subject: Re: Use of array shift and blocks Hi -- On Mon, 25 Sep 2006, Toby Rodwell wrote: > unknown wrote: >> ... >> shift doesn't take a block. You can write one but shift won't call >> it. >> >> You could do this: >> >> until array.empty? >> puts array.shift >> end >> >> >> David > > Many thanks David. I'm not sure I understand why shift doesn't take a > block, but thanks for confirming it. I expect it's because shifting is a (conceptually) atomic operation. If you need to examine what got shifted, you can get the return value. If you need to examine the newly-shortened array, you can examine it directly. There's really nothing for a block to do. Consider, by way of contrast, something like String#sub, where you find something and replace it with something -- and you might want to have a handle on the 'something', in the middle, so that you can manipulate it to generate the eventual replacement string. David -- David A. Black | dblack@wobblini.net Author of "Ruby for Rails" [1] | Ruby/Rails training & consultancy [3] DABlog (DAB's Weblog) [2] | Co-director, Ruby Central, Inc. [4] [1] http://www.manning.com/black | [3] http://www.rubypowerandlight.com [2] http://dablog.rubypal.com | [4] http://www.rubycentral.org