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)