...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

Static Import, Renamed Import, Selective Import

D 0.163
Jul 18, 2006
New/Changed Features

  • Object.opCmp now throws an error. Should override it if used. Breaks existing code.
  • Imports now default to private instead of public. Breaks existing code.
  • Added static imports, renamed imports, and selective importing.

なんだか import が拡張されたようだ.
ドキュメントのサンプルそのまんまだけど一応試してみた.

当該部分のドキュメント: http://www.digitalmars.com/d/module.html
std.stdio モジュールのシンボル一覧: http://www.digitalmars.com/d/phobos/std_stdio.html

Static Import


// シンボルが名前空間に import されないので
// std.stdio.* は完全な名前が必要
static import std.stdio;

void main()
{
std.stdio.writefln("test"); // 完全な名前なのでok
//writefln("test"); // 不完全なのでエラー
}

Renamed Import

// std.stdio を io の名前で import
import io = std.stdio;

void main()
{
io.writefln("test"); // ok
//std.stdio.writefln("test"); // 完全な名前はエラー
//writefln("test"); // 不完全な名前でもエラー
}

Selective Import

// std.stdio から writef を import
// writefln を print の名前で import
// その他のシンボルは import されない
import std.stdio : writef, print = writefln;

void main()
{
writef("test"); // ok
//std.stdio.writef("test"); // 完全な名前はエラー
//writefln("test"); // print に改名しているのでエラー
print("test"); // writefln を改名したものなのでok
//fwritefln(stdout, "test"); // import されていないのでエラー
}