在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C++/ 契約式編程
類的訪問(wèn)修飾符
D語(yǔ)言運(yùn)算符
D語(yǔ)言邏輯運(yùn)算符
類指針
D語(yǔ)言元組
D語(yǔ)言指針
D語(yǔ)言模塊
D語(yǔ)言sizeof運(yùn)算符
D語(yǔ)言混合類型
D語(yǔ)言封裝
D語(yǔ)言條件編譯
類的靜態(tài)成員
D語(yǔ)言do...while循環(huán)
D語(yǔ)言結(jié)構(gòu)體
重載
D語(yǔ)言字符串-String
D語(yǔ)言決策語(yǔ)句
D語(yǔ)言接口
D語(yǔ)言for循環(huán)
D語(yǔ)言switch語(yǔ)句
D語(yǔ)言關(guān)聯(lián)數(shù)組
D語(yǔ)言范圍
D語(yǔ)言枚舉Enums
契約式編程
D語(yǔ)言并發(fā)
D語(yǔ)言開(kāi)發(fā)環(huán)境設(shè)置
D語(yǔ)言別名
D語(yǔ)言常值
D語(yǔ)言常量
D語(yǔ)言函數(shù)
D語(yǔ)言if嵌套語(yǔ)句
D語(yǔ)言循環(huán)
D語(yǔ)言概述,D語(yǔ)言是什么?
D語(yǔ)言運(yùn)算符優(yōu)先級(jí)
D語(yǔ)言continue語(yǔ)句
D語(yǔ)言異常處理
D語(yǔ)言break語(yǔ)句
D語(yǔ)言if...else語(yǔ)句
D語(yǔ)言類和對(duì)象
類繼承
D語(yǔ)言字符
D語(yǔ)言教程
D語(yǔ)言關(guān)系運(yùn)算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語(yǔ)言抽象類
D語(yǔ)言if語(yǔ)句
D語(yǔ)言賦值運(yùn)算符
D中算術(shù)運(yùn)算符
D語(yǔ)言類成員函數(shù)
D語(yǔ)言位運(yùn)算符
D語(yǔ)言變量
D語(yǔ)言數(shù)據(jù)類型
D語(yǔ)言文件I/O
D語(yǔ)言數(shù)組
一元運(yùn)算符重載
D語(yǔ)言嵌套switch語(yǔ)句
D語(yǔ)言基本語(yǔ)法
二元運(yùn)算符重載
this指針
D語(yǔ)言聯(lián)合體
D語(yǔ)言模板
D語(yǔ)言嵌套循環(huán)
D語(yǔ)言while循環(huán)

契約式編程

在D編程中的契約編程是專注于提供錯(cuò)誤處理一個(gè)簡(jiǎn)單易懂的手段。在D編程契約編程是由三種類型的代碼塊來(lái)實(shí)現(xiàn):

  • body 塊

  • in 塊

  • out 塊

body 塊

Body塊包含執(zhí)行的實(shí)際功能代碼。 IN和OUT塊是可選的而身體塊是強(qiáng)制性的。一個(gè)簡(jiǎn)單的語(yǔ)法如下所示。

return_type function_name(function_params)
in
{
   // in block
}
out (result)
{
   // in block
}
body
{
   // actual function block
}

塊中預(yù)條件

塊是用于簡(jiǎn)單的預(yù)條件驗(yàn)證輸入?yún)?shù)是否是可以接受的,并在可以由代碼處理范圍。在塊中的好處是,所有的進(jìn)入條件可以保持在一起,并獨(dú)立于該函數(shù)的實(shí)際主體。一個(gè)簡(jiǎn)單的先決條件用于驗(yàn)證密碼,它的最小長(zhǎng)度如下所示。

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

當(dāng)上面的代碼被編譯并執(zhí)行,它在讀取上一節(jié)中創(chuàng)建的文件,并產(chǎn)生以下結(jié)果:

true

外部塊后置條件

該列塊從函數(shù)返回值。它驗(yàn)證返回值是在預(yù)期范圍。顯示包含在國(guó)內(nèi)外享有一個(gè)簡(jiǎn)單的例子如下,轉(zhuǎn)換個(gè)月,一年一個(gè)組合的十進(jìn)制年齡的形式。

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

當(dāng)上面的代碼被編譯并執(zhí)行,它在讀取上一節(jié)中創(chuàng)建的文件,并產(chǎn)生以下結(jié)果:

12.8333