What about something like

{|x| x == x.to_i.to_s}

If the string the above block is applied to is not a number, this
should fail, right?

-Rich


On 12/21/05, Matthew Feadler <matthew / feadler.com> wrote:
> Retro thanks to all who helped me with my last post.  I'm certainly more
> comfortable with Ruby now than then, but still a newbie as the following
> will surely demonstrate.
>
> Below, you can see that I'm checking command-line arguments to the
> program for various conditions.  Unfortunately, because the args are
> stored as strings, when I convert them via to_i, empty and non-numerical
> strings become 0.  0 is an acceptable element in this program, therefore
> I can't use it to test for invalid input.  I've worked around this (sort
> of), by creating two sets of variables for the arguments (one set as
> strings, one set as integers).  Unfortunately, this complicates the
> code, and more importantly, leaves me stumped concerning how to test for
> non-numeric values.
>
> So, the program does what I want, except when the args are non-numeric
> strings, and the code seems uglier than it ought to be.
>
> Thanks in advance,
>
> -ELf
>
> def gen_chart(max)
>   x=0
>   y=0
>   local_chart = Array.new
>   while x<=max
>     y+=x
>     local_chart[x]=y
>     x+=1
>   end
>   local_chart
> end
>
> arg0 = ARGV[0]
> arg1 = ARGV[1]
>
> arg0i = ARGV[0].to_i
> arg1i = ARGV[1].to_i
>
> if arg0.nil? or (arg0i < 0) or (arg1i < 0)
>   #print usage
>   print <<-EOS
>
> No args, or bad args!
>
> Usage: #$0 [maxvalue]
>        #$0 [minvalue] [maxvalue]
>   EOS
> elsif arg1.nil?
>   #do chart to arg0, print last pair
>   chart = gen_chart(arg0i)
>   puts arg0i.to_s + ": " + chart[arg0i].to_s
> else
>   #do chart to arg1, print pairs from arg0 to last
>   chart = gen_chart(arg1i)
>   x=arg0i
>   y=arg1i
>   while x<=y
>     puts x.to_s + ": " + chart[x].to_s
>     x+=1
>   end
> end
>
> --
> Posted via http://www.ruby-forum.com/.
>
>