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

D語言常量

我們經(jīng)常使用的是可變的變量,但可以有很多場(chǎng)合是不需要可變。不可變的變量可以在這樣的情況下被使用。幾個(gè)例子下面給出其中不可改變的變量都可以使用。

  • 像圓周率是永遠(yuǎn)不變的數(shù)學(xué)常數(shù)。

  • 陣列,其中我們希望保留的值,這是不突變的要求。

不變性使得它可以用于理解變量是不可變的或可變的低保某些操作不改變某些變量。它也減少某些類型的程序的錯(cuò)誤的風(fēng)險(xiǎn)。 D語言的不變性概念是由const和不可改變的關(guān)鍵字來表示。雖然這兩個(gè)詞本身詞義相近,它們?cè)诔绦虻呢?zé)任是不同的,有時(shí)卻是不兼容的。

不可變的變量的類型

有三種類型的限定,可以從未被可變的變量。

  • 枚舉常量

  • 不可變的變量

  • const的變量

枚舉常量

枚舉常量使我們能夠與常數(shù)值為有意義的名稱。一個(gè)簡(jiǎ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");
   }
}

如果我們編譯并運(yùn)行上面的代碼,這會(huì)產(chǎn)生以下結(jié)果:

The day is Sunday

不可變的變量

不可變的變量可以在程序的執(zhí)行過程中確定。它只是指示的初始化后,它成為不可改變的編譯器。一個(gè)簡(jiǎn)單的例子如下所示。

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

如果我們編譯并運(yùn)行上面的代碼,這會(huì)產(chǎn)生以下結(jié)果:

immutable(int)4
immutable(int)100

可以在上面的例子中看到它是如何可能的數(shù)據(jù)類型傳送到另一個(gè)變量,并使用stringof同時(shí)打印。

const 變量

const變量不能被修改類似不可改變的。不可變的變量可以傳遞給函數(shù)作為他們不變的參數(shù),因此建議使用一成不變超過常量。前面使用的相同的例子被修改為常量,如下所示。

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

如果我們編譯并運(yùn)行上面的代碼,這會(huì)產(chǎn)生以下結(jié)果:

const(int)7
const(int)100

不可改變的參數(shù)

常量刪除對(duì)原變量是否是可變的或者不可變的,因此使用不可變使得它通過它的其他函數(shù)保留了原始類型的信息。一個(gè)簡(jiǎn)單的例子如下所示。

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

如果我們編譯并運(yùn)行上面的代碼,這會(huì)產(chǎn)生以下結(jié)果:

0: 1
1: 2