功能合同

例如,如果调用方法,则对象的状态可能不允许使用特定参数调用方法或根本不调用方法。

class OlderThanEighteen {
    uint age;

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