Implicit Conversion


#1

Hello all,
I’m new to this site I’m an intern at software company and was given the
task of writing a program in ruby that simply could open data files
check for a particular field in the text file and compare the intger
agains’t a mininum value.

I seem to be getting a prblem from ruby that says
" `[]’: no implicit conversion from nil to integer (TypeError)"

Ruby doesn’t seem to let me give integer values to an array inside a
loop.
Is there anyway I can static cast or do a type conversion in ruby ?


#2

Demetirck Demetrickn wrote:

I seem to be getting a prblem from ruby that says
" `[]’: no implicit conversion from nil to integer (TypeError)"

Ruby doesn’t seem to let me give integer values to an array inside a
loop.

That error doesn’t happen when you give an integer, it happens when you
give
nil. array[1] works, array[nil] does not. So likely you have a variable
that
is nil or a method that returns nil, while you expect it to return an
integer.
(For example Regex#=~ returns nil if the regex does not match. So if you
use
the return value from =~, you’ll have to check that it’s not nil before
using
it in []).

HTH,
Sebastian


#3

On Wed, Nov 19, 2008 at 12:35 PM, Demetirck Demetrickn
removed_email_address@domain.invalid wrote:

loop.
Is there anyway I can static cast or do a type conversion in ruby ?

Posted via http://www.ruby-forum.com/.

It doesn’t sound like your error is necessarily what you think it is.
That
error happens when you do something like:
a = [1, 2, 3, 4, 5]
i = nil
a[i]

You can convert most objects (including nil) to an integer with the to_i
method, but that probably isn’t going to fix anything. nil.to_i is
always 0.

Post some code and someone here will likely be able to spot your error.


#4

rand_id = rand(removed_email_address@domain.invalid-1) @abc =
@abc.hits[rand_id].primary_key.to_i

i am getting an no implicit conversion from nil to integer .please
suggest any solution

error is coming from the C code inside the Ruby interpreter. A core
class, implemented in C, is being handed a nil when it expects an
Integer. It may have a #to_i but it doesn’t have a #to_int and so the
result is the TypeError.

but how can i change there please suggest solution…