D言語の心底どうでも良い話

さーてと、今日もまた、D言語のどうでもいい話でも書くか。

dmdの有名だけどドキュメントされていない(はず、調べてないけど...)仕様に、
配列は自身を適用できる、第一引数に持つ関数はメソッドのように扱えるっぽい。
というのがあります。

import std.string;
........
charsrc = "Hello World";
chartxt = src.replace("l","L");

のように第一引数の代わりに配列を指定できるわけです。
なかなか便利です。

より便利な例として下のも書いておきます

toupper(replace("Hello C++ World","C++","D"));
"Hello C++ World".replace("C++","D").toupper();

上の式は個人的には非直感的に感じると思います。
下ならcin,coutのようにだらだらと作業を書けるし(個人的には)直感的で好きなのです。


ただ、少ーしばかり不満はあります。
それは関数テンプレートが無いことから発生します。
つまり型を明示的に書いた関数を使う、または、
void*,void[]を引数に持つ関数を使うしかないと言うこと。

関数テンプレートが出来ればかなりスマートにコードが書けるのになぁ