anansi wrote:
> Hi,
> I'm struggeling with writing a little script. It has a loop just e.g. 
> like this:
>
> for x in 1..10 do
> begin
>  puts "#{x}"
> end
>
> The userinput is the loop count (so above the userinput would have 
> been 1..10): but now this userinput can be a fixnum like 12 or 36 or 
> it can be a range like 1..10 or 24..84 or an array like [23,41,35,63] 
> and for every 3 different input kinds the loop shall do the same.
>
> Like in this example:
>
> If userinput is just fixnum 11 it just prints 11 on the screen, is it 
> a range from 1..10 all numbers from 1..10 shall be printed and for an 
> array all single numbers stored in the array...you know what I mean. 
> The actual routine doesn't print anything it's just about I have to 
> process numbers which can the user give in, in three different ways 
> and I was wondering if it is possible to build this into one single 
> loop and not three different ones?
>

Assuming that userinput can only be a Range, Array, or Fixnum...both 
Range and Array have an each method. Test userinput to see if it 
responds to :each. If it does, you're golden. If it doesn't, it's a 
Fixnum. Make an array from the Fixnum by calling Array(). Now iterate 
over the result using :each. (This is untested but it'll give you an 
idea of what to do.)

userinput = Array(userinput) unless userinput.respond_to? :each
userinput.each do |x|
    puts x
end


P.S. the puts method converts its argument to a string. You don't need 
to use "#{x}". 

-- 
RMagick [http://rmagick.rubyforge.org]
RMagick Installation FAQ [http://rmagick.rubyforge.org/install-faq.html]