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/.
>
>