Dave Cantrell
2/24/2006 3:39:00 AM
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