W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
我們經常使用可變的變量,但是在很多情況下不需要可變性。
D的不變性概念由const和immutable關鍵字表示,盡管這兩個詞本身的含義很接近,但它們在程序中的職責有所不同,有時是不兼容的。
枚舉常量使將常量值與有意義的名稱相關聯(lián)成為可能,一個簡單的如下所示。
import std.stdio;
enum Day{
Sunday=1,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
void main() {
Day day;
day=Day.Sunday;
if (day == Day.Sunday) {
writeln("The day is Sunday");
}
}
編譯并執(zhí)行上述代碼后,將產生以下輸出-
The day is Sunday
不變變量可以在程序執(zhí)行期間確定,它只是指示編譯器在初始化之后變得不可變。一個簡單的如下所示。
import std.stdio;
import std.random;
void main() {
int min=1;
int max=10;
immutable number=uniform(min, max + 1);
//cannot modify immutable expression number
//number=34;
typeof(number) value=100;
writeln(typeof(number).stringof, number);
writeln(typeof(value).stringof, value);
}
編譯并執(zhí)行上述代碼后,將產生以下輸出-
immutable(int)4
immutable(int)100
您可以在上面的示例中看到如何在打印時將數據類型傳輸到另一個變量并使用stringof。
常量變量不能像不可變一樣進行修改,不變變量可以作為不變參數傳遞給函數,因此建議在const上使用不變。
import std.stdio;
import std.random;
void main() {
int min=1;
int max=10;
const number=uniform(min, max + 1);
//cannot modify const expression number|
//number=34;
typeof(number) value=100;
writeln(typeof(number).stringof, number);
writeln(typeof(value).stringof, value);
}
如果我們編譯并運行以上代碼,這將產生以下輸出-
const(int)7
const(int)100
const會刪除有關原始變量是可變變量還是不可變變量的信息,因此使用不可變變量會使它傳遞保留原始類型的其他
import std.stdio;
void print(immutable int[] array) {
foreach (i, element; array) {
writefln("%s: %s", i, element);
}
}
void main() {
immutable int[] array=[ 1, 2 ];
print(array);
}
編譯并執(zhí)行上述代碼后,將產生以下輸出-
0: 1
1: 2
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: