×
D语言教程D语言概述,D语言是什么?D语言开发环境设置D语言基本语法D语言变量D语言数据类型D语言枚举EnumsD语言常值D语言运算符D中算术运算符D语言关系运算符D语言逻辑运算符D语言位运算符D语言赋值运算符D语言sizeof运算符D语言运算符优先级D语言循环D语言while循环D语言for循环D语言do...while循环D语言嵌套循环D语言break语句D语言continue语句D语言决策语句D语言if语句D语言if...else语句D语言if嵌套语句D语言switch语句D语言嵌套switch语句D语言函数D语言字符D语言字符串-StringD语言数组D语言关联数组D语言指针D语言元组D语言结构体D语言联合体D语言范围D语言别名D语言混合类型D语言模块D语言模板D语言常量D语言文件I/OD语言并发D语言异常处理契约式编程D语言条件编译D语言类和对象D语言类成员函数类的访问修饰符构造函数和析构函数this指针类指针类的静态成员类继承重载一元运算符重载二元运算符重载比较操作符重载D语言封装D语言接口D语言抽象类

契约式编程


在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

分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)