1. 列舉簡介
2. 與switch結構搭配的應用
所謂列舉(Enum)是指我們可以將一些整數常數包成一個集合,並且將各個常數命名成具有意義的名稱,讓程式碼的可讀性變得更好。因為它較常用於與switch結構搭配,因此我想在這裡先介紹一下。
那麼我們就先來看看列舉的定義語法:
enum {enum name}
{
{member name 1},
{member name 2},
....
};
enum actions
{
MOVE, //初始預設值為0
STAND,
TALK,
LOOK
};
首先我們定義了一個列舉集合,這個名稱為 actions,它代表著一個人的動作,接著我們繼續定義了人的動作有哪些,例如移動(MOVE)、站立(STAND)、說話(TALK)和查看(LOOK)。
這些動作的值是從 0 往上遞增,也就是 MOVE = 0, STAND = 1, TALK = 2, LOOK = 3。若設計者想更改初始數值,例如把 MOVE 的值改成 100,可以定義如下
enum actions
{
MOVE = 100,
STAND,
TALK,
LOOK
};
接續在後的 STAND、TALK、LOOK 的值就會是從 100 開始往上遞增,如上述類推。
是否還記得我們在介紹 switch 結構時有提及判斷的主角是單一個整數值? 因為這樣的原因我們很難直接在 switch 裡用 1、2、3 等等來讓設計者們(包括自己)理解判斷的實質意義為何,因此這時候就可以搭配列舉(Enum),來讓這些數字從人類的角度來看可以更顯得容易理解。
舉上述的 actions 列舉例子,我們可以將它應用如下:
enum actions
{
MOVE = 100,
STAND,
TALK,
LOOK
};
void main()
{
int a = actions::MOVE;
switch (a) {
case actions::MOVE:
// do something for moving ...
break;
case STAND:
// do somthing for standing ...
break;
case TALK:
// do something for talking ...
break;
case LOOK:
// do something for looking ...
break;
}
}
上述範例我們直接定義一個變數 a 為 actions::MOVE,也就是 100,接著我們將變數 a 丟到 switch 結構中做判斷,每個 case 也都用 actions 列舉中的成員來做判斷標示,這樣在程式碼理解上就可以很清楚理解判斷的意義為何,這整段程式碼的用途又是為何就能一目了然了。
Last updated: