راهنمای ایجاد DSL در کاتلین – به زبان ساده


یکی از قابلیتهای واقعاً مفید کاتلین امکان ساخت DSL سفارشی است. در این مقاله به بررسی روش ایجاد DSL در کاتلین میپردازیم. به این منظور تنها به چهار چیز نیاز دارید:
- نمادگذاری میانوندی
- متدهای اکستنشن
- لامبدا
- لامبدا با گیرنده
در ادامه این موارد را یک به یک بررسی میکنیم.
نمادگذاری میانوندی
در «نمادگذاری میانوندی» (Infix Notation) براکتها و نقطهها را حذف میکنیم:
کافی است نمادگذاری میانوندی را پیش از اعلان متد اضافه کنیم تا کار کند:
متدهای اکستنشن
با استفاده از متدهای اکستنشن میتوان تابعهای جدید را به هر کلاس بدون نیاز به ارثبری اضافه کرد.
برای این که آن را بدون ارثبری به عنوان بخشی از کلاس String دربیاوریم، باید متد shout را بدون پیشوند String ایجاد کنیم.
متدهای اکستنشن دامنه پروژهای دارند. میتوان از هر جایی درون پروژه به آنها دسترسی داشت.
لامبدا
با استفاده از لامبداها میتوان «الفاظ تابعی» (function literals) را به تابعهای مرتبه بالاتر ارسال کرد.
لامبدا با گیرنده
با استفاده از لامبدا به همراه گیرنده میتوان الفاظ تابعی را به تابعهای مرتبه بالاتر اما با نوع گیرنده ارسال کرد.
ترکیب همه موارد
در این بخش با روش ساخت یک DSL خاص که صرفاً به منظور نمایش شیوه کار ایجاد میشود آشنا میشویم.
کد تبدیل آن به یک DSL معتبر به سادگی زیر است:
سخن پایانی
بدین ترتیب موفق شدیم یک DSL سفارشی در کاتلین ایجاد کنیم. با این که این DSL ممکن است در دنیای واقعی چندان مفید نباشد، اما امیدواریم به این ترتیب ایده خوبی از شیوه استفاده از این قابلیتهای متفاوت کاتلین برای ساخت DSL سفارشی برای خودتان به دست آورده باشید.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی اندروید
- مجموعه آموزشهای برنامهنویسی
- آموزش مقدماتی زبان برنامه نویسی کاتلین (Kotlin) برای توسعه اندروید
- زبان برنامه نویسی کاتلین (Kotlin) — راهنمای کاربردی
- برنامه نویسی Kotlin — مقدمهای بر برنامهنویسی اندروید با زبان کاتلین
==