From: Benjamin Oakes Date: 2008-03-11T20:18:12+09:00 Subject: Re: newbie question On Mon, Mar 10, 2008 at 9:11 AM, Frantisek Psotka wrote: > yes, i can write > > a = b || a > > but isn't it more complex. imagine that b is nil. then a = a will be > evaluated? > > maybe time for feature request? new operator a =|| (a = b if b) > > (variable = params[:nice_symbol] if params[:nice_symbol] doesnt look > very nice) > > > > > Lars wrote: > > On Mar 10, 11:50 am, Farrel Lifson wrote: > >> On 10/03/2008, Frantisek Psotka wrote: > >> > >> > is in ruby operator for: > >> > >> > a = b if b > >> > >> > a (operator) b > >> > >> a ||= b > > > > "a ||= b" means "a = b unless a". > > > > I don't think there is an operator for "a = b if b". > > > > Luckily, "a = b if b" is valid ruby code. "a = b || a" or "a = (b or > > a)" would also work. > > > > -- > Posted via http://www.ruby-forum.com/. > > I guess I don't understand what the point of having a = b if b is. The only thing I can see that's different than a ||= b is that false will become nil. Here's what I tried: def demo(some_value) out = some_value if some_value puts("out: #{out.inspect}") out = nil || some_value puts("out: #{out.inspect}") out = some_value puts("out: #{out.inspect}") a_different_variable ||= some_value puts("a_different_variable: #{a_different_variable.inspect}") puts('------------') end demo(nil) demo(88) demo(false) Outputs: out: nil out: nil out: nil a_different_variable: nil ------------ out: 88 out: 88 out: 88 a_different_variable: 88 ------------ out: nil out: false out: false a_different_variable: false ------------ So... Why doesn't ||= work for how you're using it? (Why do you want the "b if b" behavior?) -- Ben (aka divokz)