Are modules analogous to namespaces in C# or packages in Java?

Justin Whear justin at economicmodeling.com
Wed Jan 1 10:42:06 PST 2014


On Wed, 01 Jan 2014 17:43:53 +0000, Afshin wrote:

> Modules confuse me as a way to organize code.
> 
> If a module is composed of multiple classes, it seems that the module
> semantics in D encourages putting all those classes in one file.
> 
> Can someone explain how to organize a set of classes into a module (or
> namespace, or package) so that each class can have their own file?

Read about modules here: http://dlang.org/module.html

Modules are not like namespaces: "Modules have a one-to-one 
correspondence with source files."  A module cannot span multiple files.

You may organize code into modules however you like; idiomatically for D, 
code is grouped into modules by functionality (e.g. std.algorithm) and 
may contain many classes, structures, and free functions.

While modules cannot be defined across multiple files, they do nest; you 
could have a file structure like this:

src/
  myproject/
     core/
        class1.d
        class2.d

With the following modules:

   myproject.core.class1, myproject.core.class2

A package.d module would allow other code to simply import myproject.core, 
accomplishing a similar effect.


More information about the Digitalmars-d-learn mailing list