Avoiding Naming Collisions with Namespaces : Modules Creation « Language Basics « Ruby






Avoiding Naming Collisions with Namespaces



module StringTheory
  class String
    def initialize(length=10**-33)
      @length = length
    end
  end
end

String.new                                       # => ""

StringTheory::String.new

module StringTheory2
 RubyString = String
 class String
   def initialize(length=10**-33)
     @length = length
   end
  end

  RubyString.new("This is a built-in string, not a StringTheory2::String")
end
# => "This is a built-in string, not a StringTheory2::String"

 








Related examples in the same category

1.Modules and Namespaces
2.Modules provide a structure to collect Ruby classes, methods, and constants into a single, separately named and defined unit.
3.Creating Modules
4.store classes inside modules.
5.access methods inside classes inside modules with Ruby scope resolution operator (::)
6.Involve demonstrating two classes with the same name, but in different modules
7.how to create a module and then include it in a class.
8.require the file containing the module, and then it would work (again, require is expecting a name in the load path).
9.prefixed with the module name you can call the method from anywhere, as is the case with the Math module.
10.Initializing Instance Variables Defined by a Module
11.Abstract method in a module
12.Use remove_const to delete a constant definition
13.Print all modules (excluding classes)
14.Print all classes (excluding exceptions)
15.Print all exceptions