On Tuesday, 31 December 2013 at 06:01:21 UTC, Afshin wrote:
Is it possible to describe modules in terms of packages (as found in Java)?

The features that Java packages have that I can't seem to get in D are: 1) You can have classes that are in the same package, but kept in separate files.
2) You can import many classes using the '*' syntax.

Is this possible in D?

What I understand is that if I have ClassA and ClassB in Module1, and I want to keep the classes in separate files, then I have to use the following module statements:

in ClassA:
module Module1.ClassA;

in ClassB:
module Module1.ClassB;

But now it becomes cumbersome to use the classes because now I have to import them explicitely:

import Module1.ClassA;
import Module1.ClassB;



If I wanted to use:
import Module1;

Then it seems I have to have ClassA and ClassB in the same D file.

Am I missing something?


It is possible if you have your file system set up like this.

Module1
    -ClassA.d
    -ClassB.d
    -package.d

//In Module1/ClassA.d
module Module1.ClassA;
class ClassA { ... }

//In Module1/ClassB.d
module Module1.ClassB;
class ClassB { ... }

//In Module1/package.d
module Module1;

public import Module1.ClassA;
public import Module1.ClassB;


//In main.d

module main;

import Module1; //This will import both ClassA and ClassB.

Very important! The name of the file with the public imports must be package.d





Reply via email to