プログラミング言語 D で、Design by Contactにある例題を実装してみて気付いたこと。
エラー・メッセージ
assert にひっかかったときに表示されるメッセージが貧弱。 (ショボーン)
Error: AssertError Failure dbc.d(26)
まぁ、debug と組み合わせるといいのかな? (面倒だけど。)
out { debug(1) { writefln("count: " , count); } assert(count >= 0); }
古い値
Eiffel でいう old は、どう書くんだろうと調べてみたところ、D's design by contract is missing "old"?で議論されているように、書けないみたいです。使えなーい。
せめて、in と out のローカル変数のスコープが一緒なら、以下のように書けて、よかったのにぃ。
in { int oldcount = count; } out { assert(count == ++oldcount); }