help with ? yield :

R

Raimon Fs

Hello,

I'm new to Ruby and Rails, and I'm learning at the same time I'm reading
books and following some threads on the web, and of course,
experimenting ...

What's the meaning of this: ?
--------------------------------------

session[:auth] ? yield : (
session[:intended_action] = action_name
session[:intended_controller] = controller_name
flash[:notice] = 'You need to be logged in to access this panel'
session_update_time
all_ok = 0
render:)template => 'login/index'))

I understand what it does, but not what means:

? yield : ( ... some code ...)


thanks!

raimon
 
N

Noah Easterly

Hello,

I'm new to Ruby and Rails, and I'm learning at the same time I'm reading
books and following some threads on the web, and of course,
experimenting ...

What's the meaning of this: ?
--------------------------------------

session[:auth] ? yield : (
session[:intended_action] = action_name
session[:intended_controller] = controller_name
flash[:notice] = 'You need to be logged in to access this panel'
session_update_time
all_ok = 0
render:)template => 'login/index'))

I understand what it does, but not what means:

? yield : ( ... some code ...)

thanks!

raimon

so ? : is normally called the trinary operator, and is common to a
bunch of languages (C, Ruby, Javascript, etc ad nauseum).

In ruby,

a?b:c

is shorthand for

if a
b
else
c
end

( not so much in C, since if statements don't have values in C )

So session[:auth] ? yield : ( ... ) either yields to a block passed by
the calling function, or executes the code defined in (...), depending
on whether session[:auth] is truish (not false or nil).
 
L

Lee Jarvis

? is the equivalent to 'if' kinda.. For example

a = 10
if a == 10 then <something> else <something else> end

is the same is

a == 10 ? <something> : <something else>


Hope that helped.

Regards,
Lee
 
S

Sebastian Hungerecker

Raimon said:
I understand what it does, but not what means:

? yield : ( ... some code ...)

foo ? bar : baz
is equivalent to
if foo then bar else baz end

HTH,
Sebastian
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,271
Messages
2,571,361
Members
48,043
Latest member
BartEaster

Latest Threads

Top