From: Rick DeNatale Date: 2008-03-19T11:31:13+09:00 Subject: Re: What does &&= do? On 3/18/08, Chad Perrin wrote: > On Tue, Mar 18, 2008 at 03:09:56PM +0900, Subbu wrote: > > I came across &&= while reading some code. I know what ||= does but > > not this one. Can someone explain what it does? > > > The other answers are not wrong, but they may not be clear. > > Just as ||= sets the value of something if it doesn't already have one, > &&= sets the value of something if it *does* already have one. > > irb(main):001:0> a = nil > => nil > irb(main):002:0> b = 'foo' > => "foo" > irb(main):003:0> a &&= b > => nil > irb(main):004:0> a = 'foo' > => "foo" > irb(main):005:0> b = 'bar' > => "bar" > irb(main):006:0> a &&= b > => "bar" Almost, but not quite: irb(main):001:0> a = false => false irb(main):002:0> b = 'foo' => "foo" irb(main):003:0> a &&= b => false irb(main):004:0> a => false irb(main):005:0> a ||= b => "foo" irb(main):006:0> a => "foo" irb(main):007:0> ||= sets the value of a variable if its value if nil or false, &&= sets the value of something if it its value is something other than nil or false. -- Rick DeNatale My blog on Ruby http://talklikeaduck.denhaven2.com/