برنامه نویسی 255 بازدید

یکی از قابلیت‌های واقعاً مفید کاتلین امکان ساخت DSL سفارشی است. در این مقاله به بررسی روش ایجاد DSL در کاتلین می‌پردازیم. به این منظور تنها به چهار چیز نیاز دارید:

  • نمادگذاری میانوندی
  • متدهای اکستنشن
  • لامبدا
  • لامبدا با گیرنده

در ادامه این موارد را یک به یک بررسی می‌کنیم.

نمادگذاری میانوندی

در «نمادگذاری میانوندی» (Infix Notation) براکت‌ها و نقطه‌ها را حذف می‌کنیم:

کافی است نمادگذاری میانوندی را پیش از اعلان متد اضافه کنیم تا کار کند:

متدهای اکستنشن

با استفاده از متدهای اکستنشن می‌توان تابع‌های جدید را به هر کلاس بدون نیاز به ارث‌بری اضافه کرد.

برای این که آن را بدون ارث‌بری به عنوان بخشی از کلاس String دربیاوریم، باید متد shout را بدون پیشوند String ایجاد کنیم.

متدهای اکستنشن دامنه پروژه‌ای دارند. می‌توان از هر جایی درون پروژه به آن‌ها دسترسی داشت.

لامبدا

با استفاده از لامبداها می‌توان «الفاظ تابعی» (function literals) را به تابع‌های مرتبه بالاتر ارسال کرد.

لامبدا با گیرنده

با استفاده از لامبدا به همراه گیرنده می‌توان الفاظ تابعی را به تابع‌های مرتبه بالاتر اما با نوع گیرنده ارسال کرد.

ترکیب همه موارد

در این بخش با روش ساخت یک DSL خاص که صرفاً به منظور نمایش شیوه کار ایجاد می‌شود آشنا می‌شویم.

کد تبدیل آن به یک DSL معتبر به سادگی زیر است:

سخن پایانی

بدین ترتیب موفق شدیم یک DSL سفارشی در کاتلین ایجاد کنیم. با این که این DSL ممکن است در دنیای واقعی چندان مفید نباشد، اما امیدواریم به این ترتیب ایده خوبی از شیوه استفاده از این قابلیت‌های متفاوت کاتلین برای ساخت DSL سفارشی برای خودتان به دست آورده باشید.

اگر این مطلب برای شما مفید بوده است‌، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

«میثم لطفی» دانش‌آموخته ریاضیات و شیفته فناوری به خصوص در حوزه رایانه است. وی در حال حاضر علاوه بر پیگیری علاقه‌مندی‌هایش در رشته‌های برنامه‌نویسی، کپی‌رایتینگ و محتوای چندرسانه‌ای، در زمینه نگارش مقالاتی با محوریت نرم‌افزار نیز با مجله فرادرس همکاری دارد.

بر اساس رای 1 نفر

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *