[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Private Method Error

Ari Brown

6/25/2007 11:12:00 PM

Once again, more questions.

So this is pertaining to my implementation of the name picker app.
When I pick a random name, I then proceed to check if it matches any
name in the used_names file. However, I keep getting a private method
error when I first choose a random line.
ERROR
-----------------------------------------|
namePicker-cli.rb:24:in `random': private method `chop' called for
nil:NilClass (NoMethodError)
from namePicker-cli.rb:22:in `open'
from namePicker-cli.rb:22:in `random'
from namePicker-cli.rb:44

CODE
----------------------------------------|
def random

until @valid == true
File.open(@input_file) do |f| # Open the file
lines = f.readlines # Read the lines
chosen_one = lines[rand(lines.size) + 1].chop # Select a
random one
end
----------------------------------------|

I have no clue why I'm getting this, and I'm almost in tears because
my computer doesn't like me. Help?

-------------------------------------------------------|
~ Ari
crap my sig won't fit


2 Answers

dblack

6/25/2007 11:43:00 PM

0

Ari Brown

6/26/2007 12:06:00 AM

0


On Jun 25, 2007, at 7:43 PM, dblack@wobblini.net wrote:
<snip>
>
> Let's say lines has 10 elements. rand(11) gives you a number between
> 0 and 10, inclusive. Adding 1 gives you a number between 1 and 11.
> Since the last index of lines is 9, that means that if you get 10 or
> 11, you're indexing nil (lines[10] or lines[11]).
>
> So... you probably want lines[rand(lines.size)].

Ahh! Okay! Thanks!
> (You probably also want to do something to update @valie :-)
Don't worry, I do. I didn't want to show my code for fear of
violating something.

~ Ari
English is like a pseudo-random number generator - there are a
bajillion rules to it, but nobody cares.