D言語の Hello World に思いのほか苦戦 [D言語]
去年そんなに深くやりこむつもりでもなく買った「D言語パーフェクトガイド」という本があるのだが、最近ちょっと D への興味が出てきたので付属CDでDコンパイラを入れて触ってみることにした。
何はなくとも Hello World というわけで、こんなのを打ち込んで実行する。
import std.stream;
int main(char[][] args)
{
stdout.writeLine("Hello World");
return 0;
}
よしよし動くね、とかやっていたのだが D は結構バージョンアップがあるらしい。どうせなら新機能とかも入ってるほうがいいのでウェブサイト [1] から最新のコンパイラを入れなおす。
そこで上記のプログラムをもう一度コンパイルすると…
hello.d(5): undefined identifier stdout hello.d(5): undefined identifier stdout hello.d(5): no property 'writeLine' for type 'int' hello.d(5): function expected before (), not 1 of type int
??? 通らないのだ。
ZIPを解凍するだけでインストールには失敗のしようもない。
ウェブでいろいろ調べてみたらなんとバージョン0.126の更新内容 [2] に以下の記述が。
stream.d:
(snip)
deprecate stdin,stdout,stderr
ええっ。
で、現在は以下の書き方が正しいようだ。
import std.cstream;
int main(char[][] args)
{
dout.writeLine("Hello World");
return 0;
}
つまり std.stream の stdout は廃止になって代わりに std.cstream に dout というのが追加になっているというわけだ。
しかしこの「D言語パーフェクトガイド」を買ったのは去年の話なのだが、 Hello World サンプルが動かなくなるような仕様変更が入るとは D おそるべしである。
[1] http://www.digitalmars.com/d/index.html
[2] http://www.digitalmars.com/d/changelog1.html#new0126
コメント 0