On 3/18/08, Chad Perrin <perrin / apotheon.com> 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/