انوم ها (Enums)
«انوم (Enum)» یک نوع ویژه است. این نوع، گروهی از «ثابت ها (Constants)» را نگه می دارد. ثابت یعنی مقداری که عوض نمی شود. مثل نمره حداکثر در کارنامه. با انوم، کد خواناتر می شود. همچنین اشتباهات کمتر می شوند.
انوم چیست و چطور بسازیم؟
برای ساخت انوم از کلیدواژه enum استفاده کن. سپس نام انوم را بنویس. بعد، آیتم ها را با ویرگول جدا کن. آیتم آخر ویرگول لازم ندارد. بهتر است آیتم ها را بزرگ بنویسی. این کار یک عرف خوانایی است.
enum Level {
LOW,
MEDIUM,
HIGH
};
int main() {
enum Level myVar = MEDIUM;
printf("%d\n", myVar);
return 0;
}
نکته: به طور پیش فرض، اولین آیتم صفر است. سپس اعداد بعدی یکی یکی زیاد می شوند.
تغییر مقدارهای پیش فرض
می توانی مقدار هر آیتم را خودت تعیین کنی. این کار معنی اعداد را واضح تر می کند. مثل تعیین سطح سختی بازی با 25، 50، 75.
enum Level {
LOW = 25,
MEDIUM = 50,
HIGH = 75
};
int main() {
enum Level myVar = MEDIUM;
printf("%d\n", myVar);
return 0;
}
اگر فقط یک آیتم را مقداردهی کنی، بقیه به صورت خودکار ادامه می یابند.
enum Level {
LOW = 5,
MEDIUM,
HIGH
};
int main() {
enum Level myVar = HIGH;
printf("%d\n", myVar);
return 0;
}
انوم در switch
در switch از انوم زیاد استفاده می کنیم. چون کد را مرتب می کند. مثل بررسی سطح سختی بازی.
enum Level {
LOW = 1,
MEDIUM,
HIGH
};
int main() {
enum Level myVar = MEDIUM;
switch (myVar) {
case 1:
printf("Low Level\n");
break;
case 2:
printf("Medium level\n");
break;
case 3:
printf("High level\n");
break;
}
return 0;
}
typedef با enum
با typedef می توانی نام کوتاه تر بسازی. سپس دیگر لازم نیست هر بار enum بنویسی. کد تمیزتر می شود.
// روش کوتاه با typedef
#include <stdio.h>
typedef enum {
MON,
TUE,
WED,
THU,
FRI,
SAT,
SUN
} Day;
int main() {
Day today = WED;
if (today == WED) {
printf("It is Wednesday!\n");
}
return 0;
}
// بدون typedef
enum Day {
MON,
TUE,
WED,
THU,
FRI,
SAT,
SUN
};
enum Day today = WED;
گام های عملی
- نام انوم را مشخص کن.
- آیتم ها را فهرست کن.
- در صورت نیاز، مقادیر را تعیین کن.
- یک متغیر از نوع انوم بساز.
- با
switchمنطق را پیاده کن.
نکته: برای نام گذاری نوع ها، صفحه typedef را ببین. همچنین درباره حافظه در پدینگ ساختار بخوان. برای مرجع سریع خود انوم ها را علامت گذاری کن.
جمع بندی سریع
- انوم، گروهی از ثابت ها است.
- مقادیر پیش فرض از صفر شروع می شوند.
- می توانی مقادیر را تغییر دهی.
- در switch بسیار کاربردی است.
- با typedef کد کوتاه تر می شود.