Double colons in class def


#1

In this phrase:

class IterString < ::String

whatever

end

what do the double-colons do? Thx - m.


#2

On Sun, Mar 01, 2009 at 07:54:03AM +0900, matt neuburg wrote:

In this phrase:

class IterString < ::String

whatever

end

what do the double-colons do? Thx - m.

It’s explicitly telling ruby where to find the “String” constant.

For example:

module Foo
class String
def hello
“world”
end
end

class Bar < String
end

class Baz < ::String
end

end

puts Foo::Bar.new.hello
puts Foo::Baz.new.hello # => (NoMethodError)

The double colons make sure that ruby looks at the top level for the
constant.


#3

Aaron P. removed_email_address@domain.invalid wrote:

The double colons make sure that ruby looks at the top level for the constant.
Right, I see, I was testing it in a place where String and ::String were
the same; that’s why I couldn’t see a difference. :slight_smile: Thx - m.