انامریشنها با داده
عناصر enum میتونن یک یا چند نوع داده هم داشته باشن، که بهشون اجازه میده مثل union توی C رفتار کنن.
وقتی یه enum با match مچ میشه، میتونی یه اسم متغیر رو به هر مقدار داده مرتبط کنی.
جزئیات حافظهی enum:
- مقدار دادهی یه enum اندازهی حافظهای برابر با بزرگترین عنصرش خواهد داشت. این باعث میشه همهی مقدارهای ممکن توی همون فضای حافظه جا بشن.
- علاوه بر نوع دادهی هر عنصر (اگه داشته باشه)، هر عنصر یه مقدار عددی هم داره که نشون میده کدوم برچسب (tag) هست.
جزئیات دیگه:
enum توی راست چیزیه که بهش tagged union هم میگن.
- ترکیب کردن نوعها برای ساختن یه نوع جدید همون چیزیه که آدمها وقتی میگن راست نوعهای جبری (algebraic types) داره، منظورشونه.