elemkeysraw = str.split(/=(?!>)/)
i = elemkeysraw.length
scr.printw("This is the value of hashargs is #{hashargs} and it's class is
#{hashargs.class} and elemkeysraw[i] is #{elemkeysraw[i]}
elemkeysraw[i].split(/=>/)[0] is #{elemkeysraw[i].split(/=>/)[0]}")
This is the chunk of code, and the elemkeysraw[i].split(/=>/)[0] causes an
error;
private method `split' called for nil:NilClass (NoMethodError)
However elemkeysraw[i] provides a value. What's the deal with this? I'm
guessing it is because the fact that "i" is not evaluated until runtime, but
why does the element reference work, but not when attempting to use a string
method on the value that is contained there?
Nathan Taylor wrote:
elemkeysraw = str.split(/=(?!>)/)
i = elemkeysraw.length
scr.printw("This is the value of hashargs is #{hashargs} and it's class
is
#{hashargs.class} and elemkeysraw[i] is #{elemkeysraw[i]}
elemkeysraw[i].split(/=>/)[0] is #{elemkeysraw[i].split(/=>/)[0]}")
This is the chunk of code, and the elemkeysraw[i].split(/=>/)[0] causes
an
error;
private method `split' called for nil:NilClass (NoMethodError)
However elemkeysraw[i] provides a value. What's the deal with this?
I'm
guessing it is because the fact that "i" is not evaluated until runtime,
but
why does the element reference work, but not when attempting to use a
string
method on the value that is contained there?
Nil is a value. [5] # => nil; "#{nil}" # => ""
Instead of wild guessing, I suggest you do #{elemkeysraw[i].inspect}
instead of just #{elemkeysraw[i]}. That gives you a better picture what
you really have, since #{} calls to_s on the value it encloses.
Regards
Stefan
···
--
Posted via http://www.ruby-forum.com/\.
If i equals the length of the array, elemkeysraw[i] would be out of range
and return a nil value and trigger the error, no?
elemkeysraw[i-1] gets the last value in array.
Not sure why it would be returning a value earlier though.
···
On 7/6/07, shadow cipher <onebitcipher@gmail.com> wrote:
elemkeysraw = str.split(/=(?!>)/)
i = elemkeysraw.length
scr.printw("This is the value of hashargs is #{hashargs} and it's class is
#{hashargs.class} and elemkeysraw[i] is #{elemkeysraw[i]}
elemkeysraw[i].split(/=>/)[0] is #{elemkeysraw[i].split(/=>/)[0]}")
This is the chunk of code, and the elemkeysraw[i].split(/=>/)[0] causes
an
error;
private method `split' called for nil:NilClass (NoMethodError)
However elemkeysraw[i] provides a value. What's the deal with this? I'm
guessing it is because the fact that "i" is not evaluated until runtime,
but
why does the element reference work, but not when attempting to use a
string
method on the value that is contained there?
Yes, brainfart for me. Elements start at 0. Doh! <heads for more coffee>
···
On 7/6/07, Brad Carson <brad.carson@gmail.com> wrote:
If i equals the length of the array, elemkeysraw[i] would be out of range
and return a nil value and trigger the error, no?
elemkeysraw[i-1] gets the last value in array.
Not sure why it would be returning a value earlier though.
On 7/6/07, shadow cipher <onebitcipher@gmail.com> wrote:
>
> elemkeysraw = str.split(/=(?!>)/)
> i = elemkeysraw.length
> scr.printw("This is the value of hashargs is #{hashargs} and it's class
is
> #{hashargs.class} and elemkeysraw[i] is #{elemkeysraw[i]}
> elemkeysraw[i].split(/=>/)[0] is #{elemkeysraw[i].split(/=>/)[0]}")
>
> This is the chunk of code, and the elemkeysraw[i].split(/=>/)[0] causes
> an
> error;
>
> private method `split' called for nil:NilClass (NoMethodError)
>
> However elemkeysraw[i] provides a value. What's the deal with
this? I'm
> guessing it is because the fact that "i" is not evaluated until runtime,
> but
> why does the element reference work, but not when attempting to use a
> string
> method on the value that is contained there?
>