قابلیت استفاده از کلاس، ساختار یا نوع شمارنده ی موجود را می توان با کمک extension یا افزونه ها در Swift اضافه کرد، اما قابلیت overriding را نمی توان با استفاده از افزونه ها اعمال کرد. قابلیت extension در Swift به شما اجازه می دهد تا موارد ذکر شده را در قالب یک بلوک {} با یک نوع مشخص شده تعریف کرده و در طول برنامه از آن استفاده کنید.

قابلیت های Extension  در Swift

  • افزودن ویژگی های محاسبه شده و ویژگی های نوع محاسبه شده
  • تعریف متدهای نمونه و نوع
  • ارائه initializer های جدید
  • تعریف زیرنویس
  • تعریف و استفاده از انواع تو در توی جدید
  • ساختن یک نوع موجود مطابق با پروتکل

Extension با همان کلمه کلیدی “extension” اعلام می شود.

سینتکس:

نوع موجود نیز برای مشخص شدن بعنوان استاندارد پروتکل می تواند توسط Extension اضافه شود که دستور آن شبیه به دستور کلاس ها یا ساختارها می باشد.

خصوصیات محاسبه شده

ویژگی های محاسبه شده “instance” و “type” نیز می توانند با کمک Extension گسترش یابند.

هنگامی که برنامه فوق را با استفاده از playground اجرا کنیم نتیجه زیر را می گیریم:

Initializers

Swift 4 به کاربر این امکان را می دهد تا با اضافه کردن Extension به یک نوع موجود، Initializer های جدید ایجاد کند. کاربر می تواند نوع های دلخواه خود را برای گسترش انواع از پیش تعریف شده اضافه کند و همچنین اضافه کردن گزینه های مقدار دهی اولیه اضافی نیز ممکن است. Extension  تنها از ()init پشتیبانی کرده و از ()deinit پشتیبانی نمی کند.

هنگامی که برنامه فوق را با استفاده از playground اجرا کنیم نتیجه زیر را می گیریم:

متدها

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

هنگامی که برنامه فوق را با استفاده از playground اجرا کنیم نتیجه زیر را می گیریم.

تابع ()topic آرگومان را از نوع ‘(() → () :summation)’ می گیرد و برای نشان دادن تابع، هیچ آرگومانی را نمی پذیرد و هیچ مقداری را نمی دهد. برای فراخوانی چند مرتبه ی این تابع، با متد ()topic مقداردهی اولیه انجام می شود.

متدهای نمونه تغییر پذیر

متدهای نمونه نیز می توانند در صورت اعلان به عنوان افزونه، تغییر پیدا کنند.
ساختار و متدهای شمارشگر که خود و یا ویژگی خود را اصلاح می کنند، باید متد نمونه را دقیقاً مانند متدهای تغییر پذیر پیاده سازی اصلی تغییر دهند.

هنگامی که برنامه فوق را با استفاده از playground اجرا کنیم نتیجه زیر را می گیریم.

زیرنویس ها

افزودن زیرنویس جدید به مواردی که از قبل اعلام شده اند نیز از طریق Extension ممکن است.

هنگامی که برنامه فوق را با استفاده از playground اجرا کنیم نتیجه زیر را می گیریم:

انواع تو در تو

انواع تو در تو برای نمونه های کلاس، ساختار و شمارشگر نیز می توانند با کمک Extension گسترش یابند.

هنگامی که برنامه فوق را با استفاده از playground اجرا کنیم نتیجه زیر را می گیریم:

 

کلیدواژه ها :

این خبر را به اشتراک بگذارید :