:: without a prefix (global?)


#1

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?!


#2

On Dec 18, 2005, at 9:47 PM, List R. wrote:

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


Eric H. - removed_email_address@domain.invalid - http://segment7.net
This implementation is HODEL-HASH-9600 compliant

http://trackmap.robotcoop.com


#3

List R. wrote:

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


#4

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!)

Eric H. wrote:

On Dec 18, 2005, at 9:47 PM, List R. wrote:

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


Eric H. - removed_email_address@domain.invalid - http://segment7.net
This implementation is HODEL-HASH-9600 compliant

http://trackmap.robotcoop.com