D语言 - 契约(Contract)

D语言 - 契约(Contract) 首页 / D语言入门教程 / D语言 - 契约(Contract)

D编程中的Contract编程致力于提供一种简单易懂的错误处理方法。 D中的Contract编程通过三种类型的代码块实现-

  • Body block
  • In block
  • Out block

Body block

主体块包含执行的实际函数代码,输入和输出块是可选的,而主体块是必需的。一个简单的语法如下所示。

无涯教程网

return_type function_name(function_params) 
in { 
   //in块 
} 

out (result) { 
   //in块 
}
 
body { 
   //实际功能块
}

前置条件

in块是简单的前提条件,用于验证输入参数是否可接受以及代码可以处理的范围, in块的一个好处是可以将所有输入条件保持在一起并与函数的实际主体分开。验证密码最小长度的简单前提如下所示。

import std.stdio; 
import std.string;
  
bool isValid(string password) 
in { 
   assert(password.length>=5); 
}
 
body { 
   //其他条件
   return true; 
}
  
void main() { 
   writeln(isValid("password")); 
}

编译并执行上述代码后,它将读取上一部分中创建的文件,并产生以下输出-

链接:https://www.learnfk.comhttps://www.learnfk.com/d-programming/d-programming-contract-programming.html

来源:LearnFk无涯教程网

true 

后置条件

out块负责该函数的返回值,它验证返回值在预期范围内,下面显示了一个包含输入和输出的简单示例,该示例将月份,年份转换为组合十进制年龄形式

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)); 
} 

编译并执行上述代码后,它将读取上一部分中创建的文件,并产生以下输出-

链接:https://www.learnfk.comhttps://www.learnfk.com/d-programming/d-programming-contract-programming.html

来源:LearnFk无涯教程网

12.8333

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

深入浅出区块链 -〔陈浩〕

Swift核心技术与实战 -〔张杰〕

小马哥讲Spring核心编程思想 -〔小马哥〕

乔新亮的CTO成长复盘 -〔乔新亮〕

物联网开发实战 -〔郭朝斌〕

如何读懂一首诗 -〔王天博〕

说透低代码 -〔陈旭〕

React Native 新架构实战课 -〔蒋宏伟〕

高并发系统实战课 -〔徐长龙〕

好记忆不如烂笔头。留下您的足迹吧 :)