Если бы я хотел написать карточную игру, я использовал бы enum для представления цвета карточек, значения и типа.
Так что я бы хотел что-то вроде:
typedef enum {
KING, QUEEN, ACE, JACK, TEN, NINE, EIGHT, SEVEN, SIX, FIVE, FOUR, THREE, TWO
} card_value;
typedef enum {
SPADE, HEART, DIAMOND, CLUB
} card_type;
typedef enum {
BLACK, RED
} card_color;
Это в отличие от выполнения:
const int CARD_COLOR_RED = 1;
или хуже
const char* CARD_COLOR_RED = "Red";
Перечисления самодокументируются - мне не нужно знать, какое значение представляет перечисление RED
, мне просто нужно знать, что это RED
.
Это также сокращает время написания кода (эффективность работы программиста), поскольку вам не нужно думать о значениях, которые нужно присвоить своим константам, потому что, как выясняется, имя, которое вы дали, это значение, которое вы хотели иметь в первое место.
Перечисления аналогичны атомам в эрланге.