Alle luned 13 agosto 2007, Stefano Crocco ha scritto:
> Alle luned 13 agosto 2007, Haze Noc ha scritto:
> > Hey guys, I have a method as such:
> >
> > def random(len)
> >   if len !~ /\d+/
> >     pub_send "Invalid number"
> >   elsif len > 30
> >     pub_send "No more then 30 chars"
> >   else
> >     chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
> >     random = ""
> >     1.upto(len) { |i| newpass << chars[rand(chars.length)] }
> >     pub_send random
> >   end
> > end
> >
> > and i call the method like so..
> >
> > random($1) if $msg =~ /^rand (\d+)/
> >
> > the value of $1 will always be a number, but it seems when i am passing
> > it to the function it returns an error saying it cannot compare len to
> > 30 because the value of len is a string... Any ideas?
> >
> > Thanks in advance
>
> No, $1 will always be a string: the $1.. variables are set to the part of
> string matching the corresponding group. No conversion is done on it, you
> have to do that yourself. So, you should replace the last line with:
>
> random($1.to_i) if $msg =~ /^rand (\d+)/
>
> I hope this helps
>
> Stefano

I forgot you also need to change the beginning of the random method. Since len 
is now a number, you don't need the first check:

def random(len)
  if len >30
    pub_send "No more then 30 chars"
  else
    ...

Stefano