在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
方法開始分配給它,但我希望有什麼東西在框架中,將自動執行此操作。