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[]を引数に持つ関数を使うしかないと言うこと。
関数テンプレートが出来ればかなりスマートにコードが書けるのになぁ