Enums in Programming Languages and Exhaustiveness
اخیرا این ویدیو رو توی یوتیوب دیدم که نحوهی تعریف Enum توی زبانهای برنامهنویسی مختلف و امکاناتشون رو بررسی و مقایسه میکرد.
یکی از نکاتی که توجهم رو جلب کرد این بود که Golang تقریبا امکانات خاصی برای Enum نداره و باید مقادیر enum رو مثل constant تعریف کنی و حتی اگر دوتا اینام مقادیری با اسم یکسان داشته باشن توی یه فایل اسمهاشون باهم تداخل میخوره. واقعا ایدهای ندارم در این حد ساده بودن خوبه یا نه ولی فکر میکنم اذیت کننده باشه.
یکی از چیزایی که کلا توی Enum ها کاربردیه قابلیت Exhaustiveness هست. یعنی اگر روی یه متغیر از جنس enum سوویچ کیس یا match زدی خود کامپایلر چک کنه که همهی حالتها پوشش داده شده یا نه و مجبورت کنه همهی حالتها رو پوشش بدی یا صریحا ignore اشون کنی. خوبیش اینه که اگر چندماه بعد به این enum یه مقداری اضافه کنی توی زمان compile متوجه میشی که کجاها رو باید بری پیادهسازی کنی و چه مسیرهای جدیدی به کدت اضافه میشه. همچنین احتمال خطا و اینکه یه حالتی رو فراموش کنیم هم از بین میره.
راست و نسخههای جدید جاوا این قابلیت رو دارن. جاوا توی نسخههای جدید امکانات switch و enum رو خیلی بهبود داده و بهتر کرده که قابل تحسینه.
زبان Rust خیلی enum های کاربردی و قدرتمندی داره. این قابلیتها رو توی بقیه زبونها مثل جاوا و سیشارپ با ترکیب sealed interface و value class ها میشه درست کرد اما سینتکس Rust واقعا مختصر و مفیده.
#language_design #enum
✴️ @software_inside - مهندسینرمافزار
اخیرا این ویدیو رو توی یوتیوب دیدم که نحوهی تعریف Enum توی زبانهای برنامهنویسی مختلف و امکاناتشون رو بررسی و مقایسه میکرد.
یکی از نکاتی که توجهم رو جلب کرد این بود که Golang تقریبا امکانات خاصی برای Enum نداره و باید مقادیر enum رو مثل constant تعریف کنی و حتی اگر دوتا اینام مقادیری با اسم یکسان داشته باشن توی یه فایل اسمهاشون باهم تداخل میخوره. واقعا ایدهای ندارم در این حد ساده بودن خوبه یا نه ولی فکر میکنم اذیت کننده باشه.
یکی از چیزایی که کلا توی Enum ها کاربردیه قابلیت Exhaustiveness هست. یعنی اگر روی یه متغیر از جنس enum سوویچ کیس یا match زدی خود کامپایلر چک کنه که همهی حالتها پوشش داده شده یا نه و مجبورت کنه همهی حالتها رو پوشش بدی یا صریحا ignore اشون کنی. خوبیش اینه که اگر چندماه بعد به این enum یه مقداری اضافه کنی توی زمان compile متوجه میشی که کجاها رو باید بری پیادهسازی کنی و چه مسیرهای جدیدی به کدت اضافه میشه. همچنین احتمال خطا و اینکه یه حالتی رو فراموش کنیم هم از بین میره.
راست و نسخههای جدید جاوا این قابلیت رو دارن. جاوا توی نسخههای جدید امکانات switch و enum رو خیلی بهبود داده و بهتر کرده که قابل تحسینه.
زبان Rust خیلی enum های کاربردی و قدرتمندی داره. این قابلیتها رو توی بقیه زبونها مثل جاوا و سیشارپ با ترکیب sealed interface و value class ها میشه درست کرد اما سینتکس Rust واقعا مختصر و مفیده.
#language_design #enum
✴️ @software_inside - مهندسینرمافزار
YouTube
Ranking Enums in Programming Languages
We rank all the different implementations of enums in programming languages, from simple constant collections to proper algebraic datatypes.
This video was voiced using Elevenlabs for privacy reasons. If you want to try it out yourself, you can sign up using…
This video was voiced using Elevenlabs for privacy reasons. If you want to try it out yourself, you can sign up using…