Problem with: Exception: cannot convert Class into String


#1

Hello:

puts aString <<< no error printing aString here
process(aString)


def process(aString)
puts aString <<< error printing aString here
end

The error is: Exception: cannot convert Class into String

What would it cause for aString to become a Class?

Thanks!
basi


#2

hello,

this code is not complete, so it is difficult to guess why aString
inside
the method is Class.

konstantin

“basi” removed_email_address@domain.invalid wrote in message
news:removed_email_address@domain.invalid…


#3

Yes, it is incomplete. I was illustrating that the variable aString is
of type string just before calling the method, and right inside the
method, in the very first command, it is diagnosed as a Class.

– I renamed the parameter aString in the method definition. That does
not work.
– I moved the order of calling the method earlier/later in the call
sequence. No dice.
– I retyped the line. Didn’t work.

No that I expected these to make a difference.

I redefined aString inside the method, thus:

def process(aString)
aString = “ohmy”
puts aString
end

It works, but doesn’t solve the problem.

I wonder what kind of statement that I might have made somewhere in
the program that would turn a string variable into a Class?

Thanks!
basi


#4

even workStrings[0,1] will work too.
0 is the start position and 1 indicates how many chars to read from that
position

unlike C, in ruby string[0] returns the ascii value of the char at
positon 0
and not char.


#5

Hi,
I found the problem. I should convert the value to a string:

Wrong (for my purpose)
aString = workStrings[0]

I got it to work with:
aString = workStrings[0].to_s

Cheers,
basi


#6

Hi,

At Thu, 22 Dec 2005 15:42:51 +0900,
basi wrote in [ruby-talk:172076]:

Yes, it is incomplete. I was illustrating that the variable aString is
of type string just before calling the method, and right inside the
method, in the very first command, it is diagnosed as a Class.

Nobody can answer without concrete code.


#7

Thanks. This can come in handy, too.
basi