چه انتظاراتی از سوئیفت 3 داشته باشیم؟ – بخش دوم

چه انتظاراتی از سوئیفت 3 داشته باشیم؟ – بخش دوم

در مطلب قبلی به شرح برخی از قابلیت های نسخه 3 سوئیفت پرداختیم، در ادامه قصد داریم سایر تغییرات مورد انتظار از این نسخه را شرح دهیم، با ما همراه باشید.

حلقه های for به سبک زبان C

آیا این نوع حلقه های برای شما آشنایی دارد؟

for (var i = 0; i < 5; i++) {

print(i)

}

حلقه های for با این سبک در سوئیفت 3 در دسترس نخواهند بود، جهت کسب اطلاعات بیشتر می تواند پروپوزالی را که توسط Erica Sadun در GitHub ارسال شده است مطالعه کنید.

خداحافظی با ++ و –

مدتی پس از اپن سورس کردن سوئیفت، Chris Lattner سازنده سوئیفت با ارائه پروپوزالی حذف عملگرهای کاهش و افزایش از زبان سوئیفت را پیشنهاد داد. در این پروپوزال او اشاره کرده که این عملگرها در اوایل توسعه سوئیفت اضافه شده اند و به منظور مرتب سازی API سوئیفت و جلوگیری از هرگونه ابهام، ++ و – پس از این در سوئیفت در دسترس قرار نخواهند گرفت. از این رو به جای:

var a = 0

a++

کد زیر را مورد استفاده قرار خواهیم داد:

var a = 0

a += 1

پارمترهای var دیگر وجود ندارند

چنانچه با توابع سوئیفت آشنایی داشته باشید، می دانید که پارامترهای یک تابع به طور پیش فرض از نوع ثابت هستند و با اضافه کردن کلید واژه var می توانید نوع آنها را به متغیر تغییر دهید، در نتیجه برای پارمترهای متغیر، یک کپی متغیر از پارامتر به تابع ارسال می شود. اما این نوع کاربرد چه تفاوتی با پارامترهای inout دارد؟

برای تابع تفاوتی ندارد و تابع یک کپی محلی قابل تغییر از مقدار پارامتر دریافت می کند. همانطور که از نام آن پیداست پارامتر با نوع inout مقدار خود را بر روی متغیر اصلی می نویسد و به منظور جلوگیری از هرگونه ابهام بین این دو نوع پارامتر، پارامترهای var از این پس در سوئیفت 3 در دسترس نخواهند بود و پارامترهای inout باقی می مانند.

و در سوئیفت 3 کلمه کلیدی inout در قسمت نوع پارامترهای تابع قرار می گیرد. نگاهی به مثال های زیر بیندازید تا درک بهتری از این تغییر پیدا کنید.

// Swift 2

func combineStrings(inout first: String, second: String) {

// ...

}

// Swift 3

func combineStrings( first: inout String, second: String) {

// ...

}

رفتار ضمنی Tuple Splat

با این وجود که سوئیفت زبان جدیدی است، اما برخی از قابلیت های آن بسیار پیشرفته می باشند. آیا می دانید که می توانید به جای فهرستی از پارامترها یک tuple را به تابع ارسال کنید؟ اما این قابلیت از سوئیفت 3 حذف خواهد شد.

// Pass Arguments As Separate Arguments

let view = UIView()

let configuration = Configuration()

setupView(view, withConfiguration: configuration)

// Pass Arguments As Part of Tuple

let tuple = (view, withConfiguration: configuration)

setupView(tuple)

این قابلیت در برخی از شرایط بسیار کاربردی است اما ظاهرا دارای عواقبی نیز می باشد. دلیل ارائه این پروپوزال برجسته سازی هدف اصلی تیم و ساده سازی سینتکس و API زبان بیان شده است.

این قابلیت در ابتدا بسیار مرتب بود اما با رشد و ارتقای زبان بر پیچیدگی آنها افزوده شد و افراد بیشتری شروع به استفاده از آن نمودند. چنین امکاناتی ارزش محدودی به زبان اضافه می کنند اما عواقبی مانند مشکلات کارآیی در کامپایل و اعمال پیچیدگی برای چک کننده نوع را به همراه دارند که توسط حذف این امکان برطرف خواهند شد.

Xcode 8 از سوئیفت 2.3 و 3 پشتیبانی می کند، اما سوئیفت 2.3 چیست و چه تفاوتی با سوئیفت 2.2 دارد؟ سوئیفت 2.3 آپدیتی جزئی ولی بسیار مهم برای سوئیفت محسوب می شود. تفاوت اصلی آن با سوئیفت 2.2.1 سازگاری کامل با SDK برای سیستم عامل های جدید اپل یعنی آی او اس 10، tvOS 10 ،watchOS 3 و macOS Sirerra است.

بدین ترتیب بدون استفاده از سوئیفت 3 قادر به استفاده از  SDK جدید هستید. با بکارگیری Xcode 8 قادر به ارسال اپلیکیشن ها به اپ استور با استفاده از سوئیفت 2.3 یا 3 می باشید. تیم سوئیفت بر این موضوع که انتقال به سوئیفت 3 تاثیر چشمگیری بر روی پروژه های فعلی دارد، کاملا واقف است و سوئیفت 2.3 از این بابت که تنها در زمان مناسب قادر به انتقال پروژه های خود هستید اطمینان حاصل می کند.

ابزارها

مورد دیگری از سوئیفت که مورد پسند توسعه دهندگان قرار می گیرد ابزارهای آن هستند و این ابزارها با انتشار نسخه 3 از سوئیفت میزبان آپدیت های قابل توجهی خواهند بود.

مستندات

در طول رویداد WWDC یک نگاه اجمالی به تغییرات اعمال شده بر روی مستندات انداخته شد. شاید این موضوع کم اهمیت جلوه کند، اما تا به حال این موضوع را مد نظر قرار داده اید که چه مدت زمانی صرف برازینگ مستندات می کنید؟ تیم سازنده تلاش قابل توجهی برای دسترسی بیشتر مستندات نموده است.

Xcode

در حال حاضر گروه انبوهی از توسعه دهندگان سوئیفت از Xcode استفاده می کنند و احتمال دارد این شرایط در آینده تغییر پیدا کند. در Xcode 8 یکپارچه سازی سوئیفت ارتقای بیشتری یافته، برای نمونه ناوبری در کتابخانه استاندارد ساده تر و یکپارچه تر از گذشته شده است و به بیان Ewa Matejska رابط های ترکیبی دارای قابلیت درک بیشتری نسبه به گذشته هستند و همین شرایط برازینگ در کتابخانه استاندارد را راحت تر می سازد و این موضوع تلفیق و بهینه سازی را به دنبال دارد، احتمالا درباره بهینه سازی سراسری ماژول شنیده اید، این قابلیت هم اکنون به طور پیش فرض در Xcode فعال شده است. این ویژگی بر روی کارآیی اپلیکیشن تاثیر می گذارد و اپل پیشنهاد می کند که این ویژگی را در طول فرآیند تولید فعال کنید. چنناچه مایل به کسب اطلاعات بیشتر در این باره هستید، می توانید مقاله Keith Harrison در این زمینه را مطالعه نمایید. بهینه سازی سراسری ماژول زمان کامپایل در اولین بیلد پروژه را کاهش داده و نتایج چشمگیری را به دنبال دارد و بیلدهای بعدی به لطف کامپایل افزایشی کمتر تحت تاثیر قرار می گیرند.

جمع بندی

سوئیفت 3 برای افراد فعال در این زمینه آپدیت چشم گیری محسوب می شود. با این وجود که هیچ کس تغییرات بنیادی را دوست ندارد، اما با اعمال این تغییرات زبان واضح تر و آشکارتر شده و پلتفرم قوی تر می گردد و برای تغییرات آینده، بدون به خطر انداختن سازگاری منبع آماده می شود.

در این مقاله چندین تغییر مهم که در سوئیفت 3 انتظار می رود را به نمایش گذاشتیم. به منظور دریافت فهرست کامل تری از تغییرات می توانید به این لینک مراجعه کنید. با مراجعه به این لینک می توانید پورپوزال هایی را که پذیرفته شده اند و آنهایی که هنوز در حال کار هستند را مطالعه نمایید، درک این پروپوزال ها معمولا بسیار آسان است.

 

http://code.tutsplus.com برگرفته از

 

اینها را هم بخوانید