What's mean? global variables

B

BlueFox

in test.rb
class Test
def greeting
"hello world!"
end
end

def test
$test ||= Test.new
end

and somewhere

puts test.greeting

what is mean of(outside of the class define)

def test
$test ||= Test.new
end

and where can find any document?

thanks.
 
D

Dave Cantrell

Jacob said:
$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
 
B

BlueFox

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

Oh! the test function just an another way to access the global variable
$test?

yesterday i forgot that we can define a fuction outside classes(unlike
java) and function's return value is the last statement's return value?



Thanks very much.



leo.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,202
Messages
2,571,057
Members
47,665
Latest member
salkete

Latest Threads

Top