Difference between revisions of "Conventional module name for importing all modules in a package"

From D Wiki
Jump to: navigation, search
Line 12: Line 12:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
== package.d ==
 +
 +
Since several releases ago, D supports importing an entire package using the <code>package.d</code> module. This file is used as a fallback by the compiler if the imported module turns out to be a directory. Example:
 +
 +
<code>source/example/package.d</code>
 +
<source lang="D">
 +
module example;
 +
 +
public import example.types;
 +
public import example.api;
 +
public import example.helpers;
 +
</source>
 +
 +
<code>source/app.d</code>
 +
<source lang="D">
 +
import example;    // imports example/package.d
 +
 +
void main() {
 +
    // ...
 +
}
 +
</source>
  
 
[[Category:CommonIdiom]]
 
[[Category:CommonIdiom]]

Revision as of 08:17, 20 May 2015

In Java, if you want to import all of the modules in a package, you'd do this:

import javax.swing.*;

Since D doesn't have a "*" (and it's unlikely that D would get such a shortcut), this capability could be added to a class by adding a module, that imports the other modules. So what should such a module be called. There have been a few suggestions.

These are common conventions:

import mylibrary.mypackage.all;
import mylibrary.mypackage._;

package.d

Since several releases ago, D supports importing an entire package using the package.d module. This file is used as a fallback by the compiler if the imported module turns out to be a directory. Example:

source/example/package.d

module example;

public import example.types;
public import example.api;
public import example.helpers;

source/app.d

import example;    // imports example/package.d

void main() {
    // ...
}