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