دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۶
  • اردیبهشت

جلسه ۳۵ : رویدادها یا Events در #F

  • دسته‌بندی‌ها :
جلسه ۳۵ : رویدادها یا Events در #F
    • جزئیات
    • نوع محتواآموزشی

      مقدمه

      سلام و درود خدمت همراهان همیشگی سایت پی وی لرن . با آموزش زبان برنامه نویسی #F همراهتون هستیم. رویداد در برنامه نویسی یعنی وقتی ما یک Event را تعریف می‌کنیم در واقع به برنامه و نرم‌افزار خود دستور می‌دهیم که در صورت بروز یک اتفاق خاص، رویداد مدنظر ما رخ دهد. در این بخش از آموزش قصد داریم رویدادها یا Events در #F و کلاس رویداد و رویداد Module در #F رو مورد بررسی قرار دهیم .همچنین چگونگی ایجاد یک رویداد در #F رو نیز خواهیم داشت.

      رویدادها یا Events در #F

      در ابتدا می خواهیم بدانیم که رویدادها یا Events در #F چه کاربردی دارند.

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

      برنامه های کاربردی نیاز به پاسخ به وقایع، زمانی که آن ها رخ می دهد، دارند.

      به عنوان مثال، interrupts. رویدادها برای برقراری ارتباط بین فرآیند استفاده می شود.
      اشیاء با یکدیگر از طریق پیغام همزمان همگام سازی می کنند.
      رویدادها به سایر توابع متصل می شوند اشیاء توابع callback را به یک رویداد ثبت می کنند.

      و این callback ها وقتی که (و اگر) Events ها توسط برخی از اشیا اجرا می شوند ،رخ می دهند .

      کلاس رویداد و رویداد Module

      کلاس <Control.Event<‘T کمک می کند در ایجاد یک شی یا رویداد قابل مشاهده.
      به عنوان اعضا ی نمونه برای کار با Events در زیر آمده است.

      عضوشرح
      Publishمشاهدات را به عنوان ارزش اولین کلاس منتشر می کند.
      Triggerمشاهدات را با استفاده از پارامترهای داده شده راه اندازی می کند.

      ماژول Control.Event توابع را برای مدیریت جریان رویداد فراهم می کند.

      مقدارشرح
      add : (‘T → unit) → Event<‘Del,’T> → unitتابع داده شده را هر بار که رویداد داده شده تریگر شود، اجرا می کند.
      choose : (‘T → ‘U option) → IEvent<‘Del,’T> → IEvent<‘U>رویداد جدیدی که selection پیام از رویداد original را فعال می کند، برمی گرداند.

      تابع selection یک پیام اصلی را به یک پیام جدید اختیاری می برد.

      filter : (‘T → bool) → IEvent<‘Del,’T> → IEvent<‘T>یک رویداد جدید را که به رویداد original گوش می دهد را برمی گرداند.

      و رویداد حاصل را تنها زمانی که آرگومان به رویداد تابع داده شده منتقل می شود.

      map : (‘T → ‘U) → IEvent<‘Del, ‘T> → IEvent<‘U>رویداد جدیدی را که مقادیر تبدیل شده توسط تابع داده شده را می گذراند، برمی گرداند.
      merge : IEvent<‘Del1,’T> → IEvent<‘Del2,’T> → IEvent<‘T>رویداد خروجی هنگام وقوع هر یک از رخدادهای ورودی فعال می شود.
      pairwise : IEvent<‘Del,’T> → IEvent<‘T * ‘T>یک رویداد جدید را که در دومی و پس از وقوع رویداد ورودی تریگر شده ،باز می گرداند.

      تریگر Nth از رویداد ورودی، آرگومان های N-1 و Nth را به عنوان یک جفت منتقل می کند.

      استدلال انتقال یافته به N-1triggering در وضعیت hidden internal نگه داشته می شوند تا زمانی که Nth triggering رخ دهد.

      partition : (‘T → bool) → IEvent<‘Del,’T> → IEvent<‘T> * IEvent<‘T>تریگر Nth از رویداد ورودی، آرگومان های N-1 و Nth را به عنوان یک جفت منتقل می کند.

      آرگومان انتقال یافته به N-1triggering در وضعیت داخلی پنهان hidden internal نگه داشته می شود تا زمانی که تریگر Nth رخ دهد.

      scan : (‘U → ‘T → ‘U) → ‘U → IEvent<‘Del,’T> → IEvent<‘U>یک رویداد جدید شامل نتایج اعمال تابع تجمیع (accumulating) داده شده به مقادیر متوالی تریگر شده در رویداد ورودی را برمی گرداند.

      یک آیتم از internal state، مقدار فعلی پارامتر state را ثبت می کند.

      internal state در حین اجرای تابع accumulation قفل نخواهد شد.

      بنابراین باید توجه داشت که IEvent ورودی به طور همزمان توسط چندین موضوع تریگر نمی شود.

      split : (‘T → Choice<‘U1,’U2>) → IEvent<‘Del,’T> → IEvent<‘U1> * IEvent<‘U2>یک رویداد جدید را که به رویداد original گوش می دهد و اولین نتیجه ی رویداد را تریگر می کند.

      اگر application تابع به ارگومان رویداد Choice1Of2 را برگرداند، و رویداد دوم اگر Choice2Of2 را بازگرداند.

      در قسمت بعد ایجاد یک رویداد در #F رو خواهیم داشت.

      ایجاد رویدادها

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

      constructor برای ایجاد یک رویداد در #F استفاده می شود.

      مثال

      مثال : 

      پس از این شما باید فیلد nameChanged را به عنوان یک عضو public نمایش دهید.

      به طوری که listener ها می توانند قلاب کنند بر روی رویداد، برای این که شما از Publish property رویداد استفاده کنید.

      مثال : 

      بعد، شما backgammon را به رویداد handlers اضافه می کنید.

      هر رویداد handler دارای نوع<IEvent <‘T است که چندین متد را فراهم می کند.

      متدشرح
      val Add : event:(‘T → unit) → unitیک تابع listener را به رویداد متصل می کند. هنگامی که رویداد اخراج می شود، listener فعال می شود.
      val AddHandler : ‘del → unitیک آبجکت handler delegate را به رویداد متصل می کند. یک handler می تواند بعدا با استفاده از RemoveHandler حذف شود. هنگامی که رویداد اخراج می شود، listener فعال می شود.
      val RemoveHandler : ‘del → unitیک listener delegate را از یک رویداد listener store حذف می کند.

      بخش زیر یک نمونه کامل را ارائه می دهد.

      مثال

      مثال زیر مفهوم و تکنیک های مورد بحث در بالا را نشان می دهد.

      مثال : 

      هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.

      مثال : 

      خب اینم از رویدادها یا Events در #F و ایجاد یک رویداد در #F

      کلام پایانی

      همراهان همیشگی سایت پی وی لرن . با آموزش زبان برنامه نویسی #F همراهتون هستیم.

      با رویدادها یا Events در #F در واقع به برنامه و نرم‌افزار خود دستور می‌دهیم. که در صورت بروز یک اتفاق خاص، رویداد مدنظر ما رخ دهد.

      در این بخش از آموزش قصد داریم رویدادها یا Events در #F و کلاس رویداد و رویداد Module در #F رو مورد بررسی قرار دادیم .

      همچنین در ایجاد یک رویداد در #F دیدیم که constructor برای ایجاد یک رویداد در #F مورد استفاده قرار می گیرد. موفق و پیروز باشید.

      QR:  جلسه ۳۵ : رویدادها یا Events در #F
      به اشتراک بگذارید