合同编程

你可以使用 requires 声明参数具有特定值。

int fib (int i) requires (i > 0) {
    if (i == 1) {
        return i;
    } else {
        return fib (i - 1) + fib (i - 2);
    }
}

fib (-1);

编译期间不会出现任何错误,但运行程序时会出错,但函数不会运行。

你还可以断言返回值与 ensures 匹配某个条件

int add (int a, int b) ensures (result >= a && result >= b) {
    return a + b;
}

你可以拥有尽可能多的 requiresensures