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



  • ۲۲
  • آبان

جلسه ۲۹ : زنجیره اختیاری در Swift

  • دسته‌بندی‌ها :
جلسه ۲۹ : زنجیره اختیاری در Swift
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش Swift را دنبال می کنند. گاهی نتایج برخی عملکردها ، جستجوها، توابع و … در Swift ممکن است ‘nil’ یا صفر باشد، در این صورت Swift بنا بر حالت های مختلف مقایری را به کاربران باز می گرداند، این فرآیندها ممکن است شامل پرس و جوها ، خصوصیات ، زیر مجموعه ها و متدها باشد که می توانند مقدار صفر برگردانند، اینگونه موارد در واقع به عنوان Optional chaining یا مفهوم زنجیره اختیاری در Swift شناخته می شوند، در ادامه این مبحث شما را بیشتر با این موضوع آشنا خواهیم کرد.

      آشنایی با زنجیره اختیاری در Swift

      در این اموزش شما با مفهوم زنجیره اختیاری در Swift و مثال هایی از آن آشنا خواهید شد.

      Optional chaining (زنجیره اختیاری در Swift) می تواند یکی از دو مقدار زیر را برگرداند:

      • اگر حاوی مقدار باشد سپس خصوصیات مربوطه ، متدها و مقادیر زیر مجموعه را برمی گرداند.
      • اگر اختیاری دارای یک مقدار “nil” باشد، تمام خصوصیات مربوط به آن، متد ها و شاخص ها به صفر می رسد.

      از آنجایی که پرس و جوهای چندگانه به متدها،خصوصیات و زیر مجموعه ها با هم گروه بندی شده اند،خطا در یک زنجیره در کل زنجیره تاثیر می گذارد.

      در نتیجه مقدار “nil” بازگردانده می شود.

      Optional chaining به عنوان جایگزینی برای مجبور کردن مجدد

      Optional chaining بعد از مقدار اختیاری با کاراکتر  ‘?’ برای فراخوانی یک ویژگی،متد یا زیرمجموعه زمانیکه مقدار اختیاری یک مقادیر یکسان را بازمی گردااند مشخص شده است.

      Optional Chaining ‘?’دسترسی به روش ها، خواص ها و زیرمجموعه های Chaining اختیاری ‘!’
      ؟ بعد از مقدار اختیاری به نام property، method، or index قرار می گیرد.! بعد از مقدار اختیاری برای فراخوانی ویژگی، متد یا زیرنویس به مجبور کردن برای باز کردن مقدار ارزش داده می شود.
      زمانیکه مقدار اختیاری ‘nil’ باشد خطا رخ می دهد.زمانیکه مقدار اختیاری ‘nil’ باشد خطا رخ داده است.

      برنامه برای Optional Chaining با ‘!’

      مثال : 

      نتیجه ی کامپایل و اجرای مثال فوق :

      مثال : 

      در برنامه ی فوق ‘election poll’ به عنوان نام کلاس اعلام شده و همچنین شامل یک تابع عضور با نام ‘candidate’ نیز می باشد.

      یک زیر کلاس با نام ‘poll booth’ و یک زیر تابع با نام ‘name’ و مقداردهی اولیه ی ‘MP’ اعلام شده است.

      فراخوانی ابر کلاس با ایجاد یک نمونه ‘cand’ با اختیاری ‘!’ مقداردهی اولیه شده است.

      از آنجا که مقادیر در کلاس پایه خود اعلام نشده است، مقدار ‘nil’ ذخیره می شود.

      بنابراین یک خطا رخ خواهد داد.

      برنامه برای Optional Chaining با ‘؟’

      مثال : 

      نتیجه ی کامپایل و اجرای مثال فوق :

      مثال : 

      در برنامه ی فوق، ‘election poll’ به عنوان نام کلاس و ‘candidate’ نیر به عنوان تابع عضو آن تعریف شده است.

      زیر کلاس با نام ‘poll booth’ و ‘name’ نیز به عنوان تابع عضو آن با ‘MP’ مقداردهی اولیه شده است.

      فراخوانی ابر کلاس با ایجاد یک نمونه ‘cand’ با اختیاری ‘؟’ مقداردهی اولیه شده است.

      از آنجا که مقادیر در کلاس پایه اعلام نشده است، مقدار “nil” ذخیره شده و در بلوک تحریر توسط کنسول چاپ می شود.

      تعریف مدل کلاس ها برای Optional chaining و دسترسی به خصوصیات

      optional chaining در Swift 4 امکان تعریف بیشتر از یک زیر کلاس را به عنوان مد کلاس ها فراهم می کند.

      این مفهوم برای تعریف مدل های پیچیده و دسترسی به خواص، متد ها و زیر مجموعه های زیر مفید خواهد بود:

      مثال : 

      نتیجه ی کامپایل و اجرای مثال فوق :

      مثال : 

      فراخوانی متدها در طول optional chaining

      مثال : 

      نتیجه ی کامپایل و اجرای مثال فوق :

      مثال : 

      تابع ()circleprint داخل() circle تعریف شده است.

      زیر کلاس با ایجاد یک نمونه با نام ‘circname’ فراخوانی شده است.

      تابع اگر شامل همان مقدار باشد آن را بازمی گرداند در غری این صورت با چک کردن کد ‘if circname.print?.circleprint() != nil’ یک پیغام نشان می دهد.

      دسترسی به زیر مجموعه ها در طول Optional chaining

      Optional chaining برای تنظیم و بازیابی یک مقدار زیرمجموعه برای اعتبار سنجی استفاده می شود که آیا فراخوانی به این شاخص یک مقدار را نشان می دهد.

      ‘؟’ قبل از زیرمجموعه های زیر، برای دسترسی به مقدار اختیاری در زیرساخت خاص قرار می گیرد.

      برنامه ی ۱

      مثال : 

      نتیجه ی کامپایل و اجرای مثال فوق :

      مثال : 

      در برنامه ی فوق مقادیر نمونه برای تابع عضو ‘radiusName’ شناخته نشده است.

      از این رو فراخوانی برنامه به تابع فقط بخش دیگری را بازمی گرداند.

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

      برنامه ۲

      مثال : 

      نتیجه ی کامپایل و اجرای مثال فوق :

      مثال : 

      در برنامه ی فوق مقادیر نمونه برای تابع عضو ‘radiusName’ شناخته شده است.

      از این رو فراخوانی برنامه به تابع مقدار ارزش ها را باز می گرداند.

      دسترسی زیرمجموعه های نوع اختیاری

      مثال : 

      نتیجه ی کامپایل و اجرای مثال فوق :

      مثال : 

      مقادیر اختیاری برای زیر مجموعه ها می تواند با اشاره به مقادیر آن زیر مجموعه ها در دسترس باشند.

      این می تواند به عنوان [subscript[0], subscript[1 قابل دسترس باشد.

      مقادیر پیش فرض زیر مجموعه ها برای ‘radius’ برای اولین بار به صورت [۳۵, ۴۵, ۷۸, ۱۰۱] اختصاص یافت.

      و برای ‘Circle’ نیز [۹۰, ۴۵, ۵۶] مقادیر تخصیص یافته است.

      سپس مقادیر زیر را به عنوان شعاع [۰] تا ۷۸ و برای دایره نیز از [۱] به ۴۵ تغییر دهید.

      لینک کردن چند سطح از زنجیره

      زیر کلاس های چند گانه همچنین می تواند با متدها ، خصوصیات و زیر مجموعه های ابر کلاس با استفاده از optional chaining لینک شود.

      چندین زنجیره ی اختیاری می تواند لینک شود.

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

      برای مثال اگر رشته در طول optional chaining قرار بگیرد این مقدار ?String را برمی گرداند:

      مثال : 

      نتیجه ی کامپایل و اجرای مثال فوق :

      مثال : 

      در برنامه ی فوق، مقادیر نمونه برای تابع عضو ‘radiusName’ مشخص نشده است.

      به این ترتیب، فراخوانی برنامه به تابع فقط بخش دیگری را بازمی گرداند.

      در حالی که ما باید برای تعریف مقادیر برای تابع عضو مشخص کنیم.

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

      برای مثال اگر رشته در طول optional chaining قرار بگیرد این مقدار ?String را برمی گرداند:

      مثال : 

      نتیجه ی کامپایل و اجرای مثال فوق :

      مثال : 

      در برنامه ی فوق، مقادیر نمونه برای تابع عضو ‘radiusName’ مشخص نشده است.

      از این رو، برنامه فراخوانی شده به تابع مقدار ارزش ها را باز می گرداند.

      chaining روی متدها با مقادیر بازگشتی اختیاری

      Optional chaining برای دسترسی به متدهای تعریف شده ی زیر کلاس نیز استفاده می شود:

      مثال : 

      نتیجه ی کامپایل و اجرای مثال فوق :

      مثال : 

      کلام آخر

      مفهوم زنجیره اختیاری در Swift نشان می دهد که برنامه نویس می تواند برای مواردی که بخش های مختلف برنامه از جمله کلاس ها ، زیر مجموعه ها ، توابع و… مقدار تهی یا صفر را برمی گردانند ، دستورالعمل های مناسب را تعریف کند.

      QR:  جلسه ۲۹ : زنجیره اختیاری در Swift
      به اشتراک بگذارید