Simple question re: ruby warning message


#1

I just set up my first ternary operator expression, and got a warning
from Ruby, as a reward! I don’t see what the problem might be:

The expression:
db_type= ‘n’ ? db = @nodes_h : db = @links_h

The warning:
…/lib/setnet/SN.rb:781: warning: string literal in condition

I use string literals all the time in case statements, and other places,
and have never had this objection.

Can someone explain the problem to me? I cannot imagine what it might
be.

Thanks!

t.

Tom C., MS MA, LMHC - Private practice Psychotherapist
Bellingham, Washington, U.S.A: (360) 920-1226
<< removed_email_address@domain.invalid >> (email)
<< TomCloyd.com >> (website)
<< sleightmind.wordpress.com >> (mental health weblog)

#2

Alle Thursday 19 February 2009, Tom C. ha scritto:

and have never had this objection.

Can someone explain the problem to me? I cannot imagine what it might be.

Thanks!

t.

Ruby thinks you are likely to have written = instead of == in the
condition.

Stefano


#3

Stefano C. wrote:

Ruby thinks you are likely to have written = instead of == in the condition.

Stefano

Geee, I wonder why? Good Lord!

A real newbie mistake!

t.

Tom C., MS MA, LMHC - Private practice Psychotherapist
Bellingham, Washington, U.S.A: (360) 920-1226
<< removed_email_address@domain.invalid >> (email)
<< TomCloyd.com >> (website)
<< sleightmind.wordpress.com >> (mental health weblog)

#4

From: Tom C. [mailto:removed_email_address@domain.invalid]

db_type= ‘n’ ? db = @nodes_h : db = @links_h

    ^^^

try replacing = with ==


#5

From: Peña, Botp [mailto:removed_email_address@domain.invalid]

From: Tom C. [mailto:removed_email_address@domain.invalid]

# db_type= ‘n’ ? db = @nodes_h : db = @links_h

^^^

try replacing = with ==

or maybe better do some arrangement, like eg,

db = db_type==‘n’ ? @nodes_h : @links_h

and wc clearly shows diff bw = and ==


#6

On Thu, Feb 19, 2009 at 4:19 AM, vimal removed_email_address@domain.invalid
wrote:

end

Which, since any ruby object except nil and false is truthy is
effectively
the same thing as

db_type = db = @nodes.h

which makes db_type, and db reference the same object, which is the
return
valud of @nodes.h


Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale


#7

On Feb 19, 1:59 pm, Tom C. removed_email_address@domain.invalid wrote:

I just set up my first ternary operator expression, and got a warning
from Ruby, as a reward! I don’t see what the problem might be:

The expression:
db_type= ‘n’ ? db = @nodes_h : db = @links_h

I guess your representation (db_type= ‘n’)
doesn’t look like a condition, its like performing an assignment.

If its a condition it should be db_type == ‘n’

Your representation (db_type= ‘n’ ? db = @nodes_h : db = @links_h)

assigns db_type the result of the following:

checks a condition ‘n’
if true
db = @nodes_h
else
db = @links_h
end

Regards,
Vimal Das