W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵(lì)
D編程中的Contract編程致力于提供一種簡單易懂的錯(cuò)誤處理方法。 D中的Contract編程通過三種類型的代碼塊實(shí)現(xiàn)-
主體塊包含執(zhí)行的實(shí)際函數(shù)代碼,輸入和輸出塊是可選的,而主體塊是必需的。一個(gè)簡單的語法如下所示。
return_type function_name(function_params)
in {
//in block
}
out (result) {
//in block
}
body {
//actual function block
}
in塊是簡單的前提條件,用于驗(yàn)證輸入?yún)?shù)是否可接受以及代碼可以處理的范圍, in塊的一個(gè)好處是可以將所有輸入條件保持在一起并與函數(shù)的實(shí)際主體分開。驗(yàn)證密碼最小長度的簡單前提如下所示。
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"));
}
編譯并執(zhí)行上述代碼后,它將讀取上一部分中創(chuàng)建的文件,并產(chǎn)生以下輸出-
true
out塊負(fù)責(zé)該函數(shù)的返回值,它驗(yàn)證返回值在預(yù)期范圍內(nèi),下面顯示了一個(gè)包含輸入和輸出的簡單示例,該示例將月份,年份轉(zhuǎn)換為組合十進(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));
}
編譯并執(zhí)行上述代碼后,它將讀取上一部分中創(chuàng)建的文件,并產(chǎn)生以下輸出-
12.8333
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: