在D编程中的契约编程是专注于提供错误处理一个简单易懂的手段。在D编程契约编程是由三种类型的代码块来实现:
-
body 块
-
in 块
-
out 块
body 块
Body块包含执行的实际功能代码。 IN和OUT块是可选的而身体块是强制性的。一个简单的语法如下所示。
return_type function_name(function_params) in { // in block } out (result) { // in block } body { // actual function block }
块中预条件
块是用于简单的预条件验证输入参数是否是可以接受的,并在可以由代码处理范围。在块中的好处是,所有的进入条件可以保持在一起,并独立于该函数的实际主体。一个简单的先决条件用于验证密码,它的最小长度如下所示。
import std.stdio; import std.string; bool isValid(string password) in { assert(password.length>=5); } body { // other conditions return true; } void main() { writeln(isValid("password")); }
当上面的代码被编译并执行,它在读取上一节中创建的文件,并产生以下结果:
true
外部块后置条件
该列块从函数返回值。它验证返回值是在预期范围。显示包含在国内外享有一个简单的例子如下,转换个月,一年一个组合的十进制年龄的形式。
import std.stdio; import std.string; double getAge(double months,double years) in { assert(months >= 0); assert(months <= 12); } out (result) { assert(result>=years); } body { return years + months/12; } void main () { writeln(getAge(10,12)); }
当上面的代码被编译并执行,它在读取上一节中创建的文件,并产生以下结果:
12.8333