D Language
Verträge
Suche…
Bemerkungen
Die Assertions werden in einem Release-Build optimiert.
Funktionsverträge
Funktionsverträge ermöglichen dem Programmierer die Überprüfung auf Inkonsistenzen. Inkonsistenzen umfassen ungültige Parameter, prüfen auf den korrekten Rückgabewert oder einen ungültigen Status des Objekts.
Die Prüfungen können vor und nach der Ausführung des Rumpfes der Funktion oder Methode durchgeführt werden.
void printNotGreaterThan42(uint number)
in {
assert(number < 42);
}
body {
import std.stdio : writeln;
writeln(number);
}
Die Assertions werden in einem Release-Build optimiert.
Funktionsverträge
Wenn zum Beispiel eine Methode aufgerufen wird, kann der Status des Objekts möglicherweise nicht zulassen, dass eine Methode mit bestimmten Parametern oder überhaupt nicht aufgerufen wird.
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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow