C#では、フィールドがどのように変更されたかを確認するために、後の条件でContract.OldValue<T>
を使用できます。私はDでこれをどのようにすることができますか?私はドキュメントでthe relevant pageを読みましたが、これは言及していません。Dのフィールドの古い値の事後条件を確認するにはどうしたらいいですか?
具体的には、私はページレンダラーを作成していて、メンバー変数にあるページまでの距離を把握しています。 out
ブロック内で、変数の値が開始時と同じかそれ以上であることを主張したいと思います(つまり、ページの下に移動しているはずです)。明らかに
class Renderer
{
private:
float pos;
public:
void writeText(string text)
in
{
assert(text !is null);
}
out
{
// how to do this?
assert(pos >= oldPos);
}
body
{
...
}
}
私は古い値を保持し、手動でwriteText
方法の開始時に、それを割り当てるために別のフィールドを追加できますが、私はこれを自動的に行います枠組みの中で何かがあります願っています。