# Ruby idiom a ||= b means?

**URL:** <https://www.ruby-forum.com/t/ruby-idiom-a-b-means/196733>\
**Category:** Ruby\
**Created:** [July 1, 2008, 6:34am UTC](https://www.ruby-forum.com/t/ruby-idiom-a-b-means/196733 "2008-07-01T06:34:31Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ratnavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/6f9a4e/32.png) [@ratnavel](https://www.ruby-forum.com/u/ratnavel)\
**Post date:** [July 1, 2008, 6:34am UTC](https://www.ruby-forum.com/t/ruby-idiom-a-b-means/196733/1 "2008-07-01T06:34:31Z")

</div>

What does the ruby idiom a ||= b mean?

Thanks,  
Ratnavel

---

<div class="post-metadata">

**Author:** ![ratnavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/6f9a4e/32.png) [@ratnavel](https://www.ruby-forum.com/u/ratnavel)\
**Post date:** [July 1, 2008, 6:54am UTC](https://www.ruby-forum.com/t/ruby-idiom-a-b-means/196733/2 "2008-07-01T06:54:37Z")

</div>

On Jul 1, 2008, at 12:31 AM, Ratnavel P S wrote:

> What does the ruby idiom a ||= b mean?
> 
> Thanks,  
> Ratnavel

It is like:  
a || a = b  
See David A. Black’s Blog  
[http://dablog.rubypal.com/2008/3/25/a-short-circuit-edge-case](http://dablog.rubypal.com/2008/3/25/a-short-circuit-edge-case)

-Rob

P.S. Please don’t ask the same question on both Rails and Ruby lists/  
forums.

Rob B. [http://agileconsultingllc.com](http://agileconsultingllc.com)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![ratnavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/6f9a4e/32.png) [@ratnavel](https://www.ruby-forum.com/u/ratnavel)\
**Post date:** [July 1, 2008, 11:08am UTC](https://www.ruby-forum.com/t/ruby-idiom-a-b-means/196733/3 "2008-07-01T11:08:37Z")

</div>

On Jul 1, 6:49 am, Rob B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> On Jul 1, 2008, at 12:31 AM, Ratnavel P S wrote:
> 
> > What does the ruby idiom a ||= b mean?
> 
> It is like:  
> a || a = b

In english, thats: If a is nil or false, then leave it, else assign a  
= b.

Often used instead of code like this:

if a.nil? then  
a = b  
end

---

<div class="post-metadata">

**Author:** ![ratnavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/6f9a4e/32.png) [@ratnavel](https://www.ruby-forum.com/u/ratnavel)\
**Post date:** [July 1, 2008, 12:47pm UTC](https://www.ruby-forum.com/t/ruby-idiom-a-b-means/196733/4 "2008-07-01T12:47:15Z")

</div>

Ratnavel P S wrote:

> What does the ruby idiom a ||= b mean?

It’s commonly used to assign default values to things.  
This idiom is also very common in Perl, which is presumably where it  
came from.

---

<div class="post-metadata">

**Author:** ![ratnavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/6f9a4e/32.png) [@ratnavel](https://www.ruby-forum.com/u/ratnavel)\
**Post date:** [July 3, 2008, 12:11am UTC](https://www.ruby-forum.com/t/ruby-idiom-a-b-means/196733/5 "2008-07-03T00:11:00Z")

</div>

This has been discussed nearly to death at:  
[http://groups.google.com/group/comp.lang.ruby/browse\_thread/thread/fe4fbc48e19105cd/bf7f73380e285aff?lnk=gst&q=Or+equal#bf7f73380e285aff](http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/fe4fbc48e19105cd/bf7f73380e285aff?lnk=gst&q=Or+equal#bf7f73380e285aff)
