From: Dave Cantrell Date: 2006-02-24T12:39:12+09:00 Subject: Re: What's mean? global variables Jacob Fugal wrote: > $test is a global variable. Thats important in this case for scope -- > $test continues to exist and retain its value between invocations of > test. The ||= idiom is one commonly found in ruby. It's similar to += > in that it is simply short hand for "$test = $test || Test.new". $test > starts with a value of nil, and the first time test is run (unless you > manually set $test beforehand), $test is initialized to a new instance > of Test, since "(nil || anything) == anything". On subsequent runs, > $test retains its value. From this behavior, ||= can be thought of as > a "default initializer" operator. Jacob, So is this a shortcut for creating a singleton in Ruby? Albeit a slightly different one I would guess, using a global variable to store a single instance rather than using a class method to instantiate a new or return the existing instance. Thanks... -dave