サーチ…


備考

アサーションはリリースビルドで最適化されます。

機能契約

機能契約により、プログラマーは不一致をチェックすることができます。不整合には、無効なパラメータ、正しい戻り値のチェック、またはオブジェクトの無効な状態が含まれます。

チェックは、関数またはメソッドの本体が実行される前後で実行されます。

void printNotGreaterThan42(uint number)
in {
    assert(number < 42);
}
body {
    import std.stdio : writeln;
    writeln(number);
}

アサーションはリリースビルドで最適化されます。

機能契約

たとえば、メソッドが呼び出された場合、オブジェクトの状態によって、メソッドが特定のパラメータで呼び出されたかどうかがまったく判断できない場合があります。

class OlderThanEighteen {
    uint age;

    final void driveCar()
    in {
         assert(age >= 18); // variable must be in range
    }
    body {
         // step on the gas
    }
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow