From: Noah Easterly Date: 2007-12-04T04:10:04+09:00 Subject: Re: help with ? yield : On Dec 3, 1:56 pm, Raimon Fs wrote: > 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 > -- > Posted viahttp://www.ruby-forum.com/. 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).