Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Ruby (http://www.velocityreviews.com/forums/f66-ruby.html)
-   -   Do I lack understanding or arrays? (http://www.velocityreviews.com/forums/t841053-do-i-lack-understanding-or-arrays.html)

 Hakusa@gmail.com 05-27-2007 08:34 PM

Do I lack understanding or arrays?

I'm doing the pascal quiz on rubyquiz.com, but I'm finding that I'm
having trouble assigning a value to my array.

I've assigned it like this:

pyramid_lvl[level][i] =\
( (pyramid[level-1][i-1]).to_i \
+ (pyramid[level-1][i] ).to_i )

and like this:
num1 = pyramid[level-1][i-1].to_i
num2 = pyramid[level-1][i].to_i
ans = num1+num2
pyramid_lvl[level][i] = [ans]

Both give me this error message:
undefined method `[]=' for 1:Fixnum (NoMethodError)

Am I getting this problem because I don't understand how arrays work
and it's simply a matter of operations, or am I having some serious
logical problem preventing correctness.

 Dan Zwell 05-27-2007 09:12 PM

Re: Do I lack understanding or arrays?

Hakusa@gmail.com wrote:
> I'm doing the pascal quiz on rubyquiz.com, but I'm finding that I'm
> having trouble assigning a value to my array.
>
> I've assigned it like this:
>
> pyramid_lvl[level][i] =\
> ( (pyramid[level-1][i-1]).to_i \
> + (pyramid[level-1][i] ).to_i )
>
> and like this:
> num1 = pyramid[level-1][i-1].to_i
> num2 = pyramid[level-1][i].to_i
> ans = num1+num2
> pyramid_lvl[level][i] = [ans]
>
> Both give me this error message:
> undefined method `[]=' for 1:Fixnum (NoMethodError)
>
> Am I getting this problem because I don't understand how arrays work
> and it's simply a matter of operations, or am I having some serious
> logical problem preventing correctness.
>
>
>

From the error, I would venture to guess (pretty sure) that
pyramid_lvl[level] contains a number, not an array (as you seem to
think). I couldn't say more without reading more code.

Dan

 dblack@wobblini.net 05-27-2007 09:12 PM

Re: Do I lack understanding or arrays?

Hi --

On Mon, 28 May 2007, Hakusa@gmail.com wrote:

> I'm doing the pascal quiz on rubyquiz.com, but I'm finding that I'm
> having trouble assigning a value to my array.
>
> I've assigned it like this:
>
> pyramid_lvl[level][i] =\
> ( (pyramid[level-1][i-1]).to_i \
> + (pyramid[level-1][i] ).to_i )
>
> and like this:
> num1 = pyramid[level-1][i-1].to_i
> num2 = pyramid[level-1][i].to_i
> ans = num1+num2
> pyramid_lvl[level][i] = [ans]
>
> Both give me this error message:
> undefined method `[]=' for 1:Fixnum (NoMethodError)
>
> Am I getting this problem because I don't understand how arrays work
> and it's simply a matter of operations, or am I having some serious
> logical problem preventing correctness.

It's just what the error says: you're trying to call the method []= on
the object 1 :-) That means that pyramid_lvl[level] must be 1. So
when you do:

pyramid_lvl[level][i] = whatever

it's like you're doing:

1[i] = whatever

That's equivalent to a method call:

1[]=(i, whatever)

and 1 has no method called []= so you get an error.

I can't tell you where in your code you assigned 1 to
pyramid_lvl[level], but that appears to be what's happening.

David

--
Q. What is THE Ruby book for Rails developers?
A. RUBY FOR RAILS by David A. Black (http://www.manning.com/black)
(See what readers are saying! http://www.rubypal.com/r4rrevs.pdf)
Q. Where can I get Ruby/Rails on-site training, consulting, coaching?
A. Ruby Power and Light, LLC (http://www.rubypal.com)

 Hakusa@gmail.com 05-27-2007 11:38 PM

Re: Do I lack understanding or arrays?

I tested this:

pyramid_lvl[level][i] is 0
pyramid[level-1][i] is 1
pyramid[level-1][i-1] is 1

Turns out that pyramid[level-1][i] was actually nil... which makes
this a logical error, not a syntax error.

So I pretty much just waisted your time, but so long and thanks for
all the fish.

 Hakusa@gmail.com 05-27-2007 11:39 PM

Re: Do I lack understanding or arrays?

> was actually nil
typo. I meant 0

 All times are GMT. The time now is 06:41 PM.