# Double colons in class def

**URL:** <https://www.ruby-forum.com/t/double-colons-in-class-def/161687>\
**Category:** Ruby\
**Created:** [March 1, 2009, 12:00am UTC](https://www.ruby-forum.com/t/double-colons-in-class-def/161687 "2009-03-01T00:00:44Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![matt\_neuburg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/4af34b/32.png) [@matt\_neuburg](https://www.ruby-forum.com/u/matt_neuburg)\
**Post date:** [March 1, 2009, 12:00am UTC](https://www.ruby-forum.com/t/double-colons-in-class-def/161687/1 "2009-03-01T00:00:44Z")

</div>

In this phrase:

class IterString \< ::String

# whatever

end

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

---

<div class="post-metadata">

**Author:** ![matt\_neuburg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/4af34b/32.png) [@matt\_neuburg](https://www.ruby-forum.com/u/matt_neuburg)\
**Post date:** [March 1, 2009, 1:45am UTC](https://www.ruby-forum.com/t/double-colons-in-class-def/161687/2 "2009-03-01T01:45:03Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![matt\_neuburg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/4af34b/32.png) [@matt\_neuburg](https://www.ruby-forum.com/u/matt_neuburg)\
**Post date:** [March 1, 2009, 2:17am UTC](https://www.ruby-forum.com/t/double-colons-in-class-def/161687/3 "2009-03-01T02:17:13Z")

</div>

Aaron P. [removed\_email\_address@domain.invalid](mailto: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. 🙂 Thx - m.
