Vala编程语言高级特性- 断言和契约编程
断言和契约编程
通过断言,程序员可以在运行时检查假设。语法是 assert(condition)
。如果断言失败,程序将终止并显示适当的错误消息。GLib 标准命名空间中还有更多的断言方法,例如:
assert_not_reached()
return_if_fail(bool expr)
return_if_reached()
warn_if_fail(bool expr)
warn_if_reached()
你可能会想使用断言来检查方法参数是否为 null。但是,这是不必要的,因为 Vala 会隐式为所有未标记 ?
的可空参数执行此检查。
void method_name(Foo foo, Bar bar) {/* 不需要,Vala 会为你做这些:return_if_fail(foo != null);return_if_fail(bar != null);*/
}
Vala 支持基本的契约编程特性。一个方法可以有前置条件(requires)和后置条件(ensures),分别必须在方法的开始或结束时满足:
double method_name(int x, double d)requires (x > 0 && x < 10)requires (d >= 0.0 && d <= 1.0)ensures (result >= 0.0 && result <= 10.0)
{return d * x;
}
result
是一个特殊的变量,代表返回值。