W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
條件語句涉及可在編譯時(shí)判斷的條件檢查,運(yùn)行時(shí)條件語句(如if,for,while)不是條件編譯函數(shù), D的以下函數(shù)用于條件編譯-
調(diào)試在程序開發(fā)過程中很有用。僅當(dāng)啟用-debug編譯器開關(guān)時(shí),才會將標(biāo)簽為debug的表達(dá)式和語句編譯到程序中。
debug a_conditionally_compiled_expression;
debug {
//... conditionally compiled code ...
} else {
//... code that is compiled otherwise ...
}
else子句是可選的。僅在啟用-debug編譯器開關(guān)時(shí),才編譯單個(gè)表達(dá)式和上面的代碼塊。
這些行可以完全標(biāo)簽為debug而不是完全刪除。
debug writefln("%s debug only statement", value);
僅當(dāng)啟用-debug編譯器開關(guān)時(shí),此類行才包含在程序中。
dmd test.d -oftest -w -debug
可以給調(diào)試語句指定名稱(標(biāo)簽),以便有選擇地包含在程序中。
debug(mytag) writefln("%s not found", value);
僅當(dāng)啟用-debug編譯器開關(guān)時(shí),此類行才包含在程序中。
dmd test.d -oftest -w -debug=mytag
調(diào)試塊也可以具有標(biāo)簽。
debug(mytag) {
//
}
一次可以啟用多個(gè)調(diào)試標(biāo)簽。
dmd test.d -oftest -w -debug=mytag1 -debug=mytag2
有時(shí),按數(shù)字級別關(guān)聯(lián)調(diào)試語句會更有用。級別增加可以提供更多詳細(xì)信息。
import std.stdio;
void myFunction() {
debug(1) writeln("debug1");
debug(2) writeln("debug2");
}
void main() {
myFunction();
}
低于或等于指定級別的調(diào)試表達(dá)式和塊將被編譯。
$dmd test.d -oftest -w -debug=1
$./test
debug1
版本類似于調(diào)試,并且以相同的方式使用。 else子句是可選的。盡管版本在本質(zhì)上與調(diào)試相同,但是使用單獨(dú)的關(guān)鍵字有助于區(qū)分它們的不相關(guān)用法。與調(diào)試一樣,可以啟用多個(gè)版本。
import std.stdio;
void myFunction() {
version(1) writeln("version1");
version(2) writeln("version2");
}
void main() {
myFunction();
}
低于或等于指定級別的調(diào)試表達(dá)式和塊將被編譯。
$dmd test.d -oftest -w -version=1
$./test
version1
靜態(tài)if是if語句的編譯時(shí)等效項(xiàng)。就像if語句一樣,靜態(tài) if接受邏輯表達(dá)式并對其求值。與if語句不同,靜態(tài) if與執(zhí)行流程無關(guān);相反,它確定程序中是否應(yīng)包含一段代碼。
在語法和語義上,if表達(dá)式都與我們之前所見的is運(yùn)算符無關(guān)。它在編譯時(shí)判斷。它產(chǎn)生一個(gè)整數(shù)值,0或1;否則為0。取決于括號中指定的表達(dá)式。盡管它采用的表達(dá)式不是邏輯表達(dá)式,但是is表達(dá)式本身用作編譯時(shí)邏輯表達(dá)式。如果條件和模板約束,它在靜態(tài)中特別有用。
import std.stdio;
enum Days {
sun,
mon,
tue,
wed,
thu,
fri,
sat
};
void myFunction(T)(T mytemplate) {
static if (is (T == class)) {
writeln("This is a class type");
} else static if (is (T == enum)) {
writeln("This is an enum type");
}
}
void main() {
Days day;
myFunction(day);
}
當(dāng)我們編譯并運(yùn)行時(shí),我們將得到如下輸出。
This is an enum type
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: