Forum: Ruby simple question re: ruby warning message

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Tom C. (Guest)
on 2009-02-19 11:00
(Received via mailing list)
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)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Peña, Botp (Guest)
on 2009-02-19 11:04
(Received via mailing list)
From: Tom C. [mailto:removed_email_address@domain.invalid]
# db_type= 'n' ? db = @nodes_h : db = @links_h

        ^^^

try replacing  =  with ==
Stefano C. (Guest)
on 2009-02-19 11:05
(Received via mailing list)
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
Tom C. (Guest)
on 2009-02-19 11:09
(Received via mailing list)
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)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Peña, Botp (Guest)
on 2009-02-19 11:11
(Received via mailing list)
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 ==
vimal (Guest)
on 2009-02-19 11:20
(Received via mailing list)
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
Rick D. (Guest)
on 2009-02-19 19:19
(Received via mailing list)
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
This topic is locked and can not be replied to.