kowさんは天ざる大好き

創作に絶望すると、世界が反転した日記

D言語:暗黙の型推論

D言語にモダンな追加実装。
DMD0.137で実装された、暗黙の型推論をさわってみた。
(サンプルコードはやねうBBSのC#スレより)


auto i = 5;
auto s = "Hello";
auto b = true;
auto numbers = new int[] [ 1,2,3 ];
auto v = new vector!(int);
// auto i;// エラー! 型が特定できない。
// auto y = [ 1,2,3 ];// エラー! 配列初期化子は許されていない。
auto z = null;// void* 型
auto fp = function int(int x, int y) { return x - y; };
auto dg = delegate int(int x, int y) { return x - y; };

感想としては、C#3.0と同等の実装かなと思う。
nullをvoid*型とするところがちょっと違うくらい。
型推論の善し悪しもあると思いますが、なにはともあれ便利です。
auto を使用したところがイマイチだなと思います。


{
auto foo = new C(); // not RAII
auto C bar = new C(); // スコープから抜けるとデストラクタが呼ばれることが保証される
}
auto 変数にしたければ、変数の型を書きなさいってことか。


まあ、次はextension methodsがDに実装されるに違いない...
Mixinの拡張性で間に合っているところではあるが、あったらやっぱり便利だとおもう。