いろいろ

16日のDBCと unittest の件は解決。


DBC の方は、in ブロック、body ブロック 含め、{}でかこってしまっていたため、外側の{}が body ブロックと解釈され、「body ブロックに in を書いちゃいかんよ」とコンパイラからしかられていた。(恥)


unittest の方はコンパイル時のオプション。
いや、マニュアルページには -unittest とすることで、単体テストの起動を抑えるみたいに書いてあったんだが……


その他、配列全体の print は、printf("%s", ar) でできてしまう。printf が、配列の各要素に対して、Object.toString() または std.string.toString() を呼び出してくれる。
しかし、"~" で文字列に連結してあげても、Object.toString() は呼び出されないのだなぁ。char[] opCast() が定義されていてもだめ。(キャスト演算子は明示的なキャストにしか影響しないらしい)


あと.object の日本語版マニュアルページには載っていなかったが、object.d を除いてみると、


void print()
{
printf("%.*s\n", toString());
}


が定義されてるじゃありませんか。
いっしょけんめ、writefln(obj.toString()) とやっていた。


今日の教訓:
toString() は暗黙的に呼ばせよう。