[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Jumping to "the next one" in something#each

Gary Wright

2/9/2007 11:05:00 PM


On Feb 9, 2007, at 5:43 PM, Garance A Drosehn wrote:
> There's a situation that I occassionally run into, which I can work
> around easy enough, but it seems that there might be an cleaner
> solution than the ones I fall back on. Let's say I want to have
> something like:
>
> ARGV.each { |arg|
> case arg
> when "-f"
> ...do something with the *next* value of |arg|...
> end
> }

Switch this to:

list = ARGV.dup # leave ARGV alone

while item = list.shift
case arg
when "-f"
file = list.shift
end
end

You can shift/unshift items as your logic dictates. When there
is nothing left the loop ends. You can break out of the loop
leaving items in ARGV via 'break'.

There are also several classes designed to process command line
arguments (e.g., GetoptLong from the standard library) that you could
use instead of rolling your own.


Gary Wright