:: without a prefix (global?)

L

List Recv

I've found some cases where things don't work correctly unless they're
prefixed with a :: . I'm really confused - isn't :: used to specify the
module (like Graphics::Circle)?

What is ::Circle? No module?!
 
E

Eric Hodel

I've found some cases where things don't work correctly unless they're
prefixed with a :: . I'm really confused - isn't :: used to
specify the
module (like Graphics::Circle)?

What is ::Circle? No module?!

The constant Circle at toplevel.

$ irb
irb(main):001:0> A = 1
=> 1
irb(main):002:0> module M
irb(main):003:1> A = 2
irb(main):004:1> puts A
irb(main):005:1> puts ::A
irb(main):006:1> end
2
1
=> nil
 
D

Daniel Schierbeck

List said:
I've found some cases where things don't work correctly unless they're
prefixed with a :: . I'm really confused - isn't :: used to specify the
module (like Graphics::Circle)?

What is ::Circle? No module?!

`::' will take you to the top level.

Bar = "::Bar"

module Foo
Bar = "Foo::Bar"

def self.bur
puts Bar => "Foo::Bar"
puts ::Bar => "::Bar"
end
end



Cheers,
Daniel
 
L

List Recv

Thanks.

Is there any case where you will use :: when you have not defined a
class with the same name in the local module?

I was working on a project where I could not access a certain class
within a module without prefixing it with ::, yet I had never (to my
knowledge) redefined it.

(FYI, in a Rails ActiveController, you can catch
::ActiveController::NameOfExceptionClass, but you need the :: ....
weird!)
 

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

Forum statistics

Threads
474,201
Messages
2,571,048
Members
47,649
Latest member
MargaretCo

Latest Threads

Top