Simple question re: ruby warning message

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 Cloyd, MS MA, LMHC - Private practice Psychotherapist
Bellingham, Washington, U.S.A: (360) 920-1226
<< tc@tomcloyd.com >> (email)
<< TomCloyd.com >> (website) << sleightmind.wordpress.com >> (mental health weblog)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# db_type= 'n' ? db = @nodes_h : db = @links_h

        ^^^

try replacing = with ==

···

From: Tom Cloyd [mailto:tomcloyd@comcast.net]

Alle Thursday 19 February 2009, Tom Cloyd ha scritto:

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.

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

Stefano

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

···

On Feb 19, 1:59 pm, Tom Cloyd <tomcl...@comcast.net> 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

Stefano Crocco wrote:

Alle Thursday 19 February 2009, Tom Cloyd ha scritto:
  

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.
    
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 Cloyd, MS MA, LMHC - Private practice Psychotherapist
Bellingham, Washington, U.S.A: (360) 920-1226
<< tc@tomcloyd.com >> (email)
<< TomCloyd.com >> (website) << sleightmind.wordpress.com >> (mental health weblog)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

···

On Thu, Feb 19, 2009 at 4:19 AM, vimal <cool.vimalsmail@gmail.com> wrote:

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

--
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