خبرنامه
 
پست الکترونیکی خود را وارد نمایید
شماره خبر : 884
تاریخ انتشار :
آشنایی با برنامه نویسی تحت بستر Swift : بخش اول

آشنایی با برنامه نویسی تحت بستر Swift : بخش اول

در کنفرانس جهانی توسعه دهندگان یا به اختصار همان WWDC، شرکت بزرگ اپل یکی از بزرگترین آپدیت های خود تحت iOS را بعد از سال 2008 از نقطه نظر توسعه‌ای برای پلتفرم خود ارائه کرد. از ابزارهایی که این شرکت چند ملیتی آمریکایی تحت پلتفرم iOS منتشر کرد می تواند به امکاناتی همچون HomeKi، HealthKit، CloudKit، Extensions و چند مورد دیگر اشاره کرد. اما با وجود این همه امکانات، بزرگترین سورپرایز اپل در این کنفرانس معرفی یک مدل  و برند جدید از زبان برنامه نویسی با نام Swift بود.
Swift در واقع یک زبان برنامه نویسی نو، اما قابل توجه بوده که اساس شکل گیری اولیه آن مبنی بر داشتن کارایی واقعی و ایمنی اجرایی دادن به برنامه هایی است که تحت بسترش تولید می شوند. این زبان برنامه نویسی از همان APIهایی بهره می برد که زبان برنامه نویسی شیگرای C نیز از آنها استفاده می کند. به طور کلی هر کاری که برنامه نویس می تواند در زبان شیگرای C انجام دهد، این عملیات تحت Swift نیز قابل انجام است.
این زبان برنامه نویسی چند ویژگی و مفهوم جدید را نیز معرفی کرده که بیشتر برای برنامه نویسان حرفه‌ای مفید خواهد بود. در ادامه این سری مقالات آموزشی، برخی از این مفاهیم جدید را بررسی خواهید کرد. پس اگر علاقه مند هستید این سری مقالات را به هیچ وجه از دست ندهید.
در نگارش و بررسی این سری مقالات، فرض ما بر این است که شما پیش از این با زبان برنامه نویسی شیءگرای C آشنایی اولیه دارید. در اولین مقاله از این سری مقالات تحت Swift، درباره فلسفه شکل گیری این زبان، ساختار فایل و نوع املای دستورات صحبت هایی را خواهیم داشت. در مقاله دوم از این سری، تمرکز خود را بیشتر روی مفاهیم پیشرفته تحت املای دستورات، مانند فرایندهای اختیاری و مدیریت حافظه خواهیم گذاشت. با سری آموزش های برنامه نویسی اپل در osx.ir همراه باشید که چیزهای جدید و منحصربه فردی برای آموزش به شما آماده کردیم.
1-فلسفه :
برای درک و آشنایی بهتر با زبان Swift، شرکت اپل طی چند سال گذشته مدام ما را به سمت بهبودات ساختاری تحت زبان شیگرای C سوق می داد. از جمله پیشرفت های زبان شی گرای C طی این سال ها می تواند به code blocks، literal array، dictionary definitions، ARC یا همان شمارش خودکار مرجع اشاره کرد. اما با این وجود اگر دقت کنید متوجه خواهید شد که این میزان پیشرفتها نسبت به گذشت این مقدار زمان، چیز خاصی محسوب نمی شدند. حال به نظر شما چرا؟ در واقع اینجاست که پای زبان برنامه نویسی Swift به میدان باز می شود. در واقع اپل طی این سال ها تمرکز خود را روی زبان برنامه نویسی جدید خود و اضافه کردن امکانات به این زبان گذاشته است.
یکی از خصوصیات فلسقه شکل گیری زبان Swift در واقع code initialization یا به عبارتی ارزش دهی اولیه کد مربوطه است. به این صورت که تمامی متغیرها و اشیاء در زبان Swift به هنگام استفاده، باید از قبل در کد ارزش دهی اولیه شده باشند. یک متغیر یا شیء که ارزش دهی اولیه نشده باشد به هنگام کامپایل سبب بروز خطا خواهد شد. این سیاست سبب خواهد شد که یک متغیر یا شیء، همیشه از مقداری برخوردار باشد. در این حالت یک مورد خاص نیز وجود دارد که مقداردهی اولیه قابل تعریف نیست. در این مورد خاص متغیر مورد نظر ما به عنوان optional شناخته خواهد شد. در دومین مقاله از این سری مقالات به این مبحث اشاراتی خواهیم داشت. با ما همراه باشید.
ویژگی دیگر این زبان به نام branch completeness شناخته می شود. با وجود این ویژگی، تمامی شاخه های دستوری چه if باشند چه switch/case، باید تمامی شرطها را تحت پوشش قرار دهند. گم کردن یک شرط در دستورات شاخه‌‌ای، مشکل ایجاد کرده و به هنگام کامپایل کد، خطا ایجاد خواهد کرد.
و اما آخرین ویژگی فلسفه زبان Swift، مزیت استفاده و به کارگیری ثابت ها نسبت متغیرهای این زبان است. در این زبان، ثابت ها و متغیرها به ترتیب زیر تعریف می شوند :


let someConstant : String = "This is a constant"
var someVariable : String = "This is a variable"

در مثال بالا همانطور که احتمالاً فهمیدید، لغت کلیدی let به منظور تعریف یک ثابت مورد استفاده قرار می گیرد در حالی که var به منظور تعریف متغیرها است. همانطور که در دستورات مشخص است می بینید که اعلان یک ثابت بسیار ساده تر شده است به همین منظور توصیه شرکت اپل بر این است که هر زمان که امکان استفاده از ثابت ها وجود داشت آنها را جایگزین متغیرها کنید. این سیاست سبب امنتر شدن کد در یک محیط multithreaded شده و از طرف دیگر موجب افزایش بهینه سازی کد با توجه به اینکه خود کامپایلر می داند که مقدار ثابت تغییر ناپذیر است خواهد شد.
البته با وجود امکانات گفته شده‌ای همچون بهبودات در زمینه قالب بندی و املای دستورات، این زبان برنامه نویسی چیزهای بیشتری را نیز در چنته خود دارد. زبان برنامه نویسی Swift از ابتدا به گونه‌ای طراحی شده است تا توانایی اصلاح مشکلات موجود در زبان C و نوع شیگرای خود، بحث ارث بری در زبان شیگرای C را داشته باشد و ریشه کرش و متوقف شدن برنامه ها را بخشکاند. در ادامه به معروف ترین خطاها و مشکلات موجود تحت زبان C و نوع شیگرای خود اشاره شده است :
out-of-bound indexes in arrays : شاخص های خارج از محدوده در آرایه‌ها
uninitialized data : داده های ارزشیابی اولیه نشده
unchecked return types : نوع برگشتی بدون علامت
unchecked pointer access : دسترسی اشاره گر بدون علامت
implicit fall through  :خطای ضمنی
goto errors : خطاهای مربوط به goto
به عنوان شخصی که هم تحت پلتفرم اندروید و هم تحت iOS برنامه نویسی می کند، باید اعتراف کنم که کدنویسی برای پلتفرم iOS با ابزارهایی همچون Cocoa و UIKit فوق العاده جالب تر و لذت بخش تر از برنامه نویسی تحت پلتفرم اندروید است. در ادامه این سری مقالات به شما ثابت خواهیم کرد که این لذت و هیجان با ترکیب زبان برنامه نویسی Swift نیز دو چندان خواهد شد. با ما همراه باشید.
2-ساختار فایل :
در زبان برنامه نویسی شیگرای C، ما دو نوع فایل هدر و پیاده سازی به ترتیب  header files با پسوند .h و implementation files با پسوند .m در اختیار داریم. این فایل های زبان شیگرای C در اصل از زبان C به عاریت گرفته شده اند.
در زبان برنامه نویسی Swift، یک کلاس در یک فایل پیاده سازی واحد تعریف شده است که شامل تمامی تعاریف و بخش های پیاده سازی کلاس است. این حالت بیشتر ما را یاد زبان های دیگری نظیر جاوا و سی شارپ می اندازد.
3-املای دستورات در Swift :
اولین چیزی که به هنگام نوشتن کد در رابط Swift شاید بیشتر از همه چیز توی ذوق بزند، لازم نبودن اضافه کردن سمی کلن به انتهای هر خط از کدهای نوشته شده است. در زبان Swift، هر خط به عنوان یک دستور شناخته می شود از این رو ما مجبور نیستیم در انتهای هر خط از سمی کلن استفاده کنیم.
اگر دقت کرده باشید ما گفتیم که مجبور نیستید، این بدان معناست که شما باز هم می توانید در صورت تمایل در انتهای هر خط از کد، سمی کلن قرار دهید. پیشنهاد شخصی من این است که بر طبق روال زبان های C و نوع شیگرای آن همیشه در زبان Swift نیز در انتهای خط از سمی کلن استفاده کنید چرا که خوانایی و درک برنامه شما بیشتر خواهد شد. البته خود من هم از همین تدبیر استفاده می کنم. حال جدای از این حالت، واقعاً مشکل است که این عادت را به یکباره ترک و فراموش کرد.
دیگر تغییر مهمی که در زبان Swift دیده می شود این است که براکت های مجعر، برای استفاده تحت دستورات if اجباری هستند. نتیجه حاصله این است که ما دیگر شاهد خطاهای امنیتی و نفوذی نخواهیم بود.
صحبت در مورد نحوه املای دستورات در این زبان برنامه نویسی می تواند پیچیده به نظر آید. زبان برنامه نویسی Swift از قابلیت های مختلف و زیرکانه‌ای برخوردار است که توضیح در مورد هر یک از آنها شاید مقاله‌ای جداگانه را بطلبد. به هر حال ما در این مقاله قصد نداریم به جزییات این قابلیت ها اشاره کنیم. اما بعضاً در لا به لای صحبتها، اشاراتی به تغییراتی که این زبان نسبت به زبان شیگرای C داشته است خواهیم داشت. با ما همراه باشید.
4-شباهت های موجود با زبان شیگرای C :
در ادامه کار ما به بررسی برخی شباهت های موجود این زبان با زبان شیگرای C با ذکر سه تکه کد خواهیم پرداخت. مثال های زیر به شما کمک خواهد کرد تا درک کاملتری از این زبان نوظهور داشته باشید :

 

// Objective-C
switch(index) {
    case 0:
        break;
    case 1:
        break;
    default:
        break;
}
 
// Swift
switch(index) {
    case 0:
    
    case 1:
 
    default:
}
 
// no break statement

 

// Objective-C
if (index == 0) {
 
}
 
// Swift
if index == 0 {
 
}
 
// parentheses are optional
// curly braces are required

 

اگر از برنامه نویسان زبان شیگرای C باشید با بررسی کدهای بالا حتماً متوجه شده اید که این زبان جدید نیز از همان الگوها و دستورات تکراری استفاده می کنید که شما پیش از این با آنها آشنا بوده اید. به عنوان مثال می توان به دستور شرطی if/else، حلقه‌های For، حلقه for ..in و دستورات switch اشاره کرد.

زبان برنامه نویسی Swift از دومجموعه عملگر ..< و ... به منظور مشخص کردن محدوده‌ای از مقادیر استفاده می کند.
به عنوان مثال ما در دستور حلقه For بالا از عملگر محدوده نیمه بسته ..< به منظور تعیین محدوده مقادیر از 1 تا 4 استفاده کرده ایم لیکن از مقدار 5، دیگر صرف نظر شده است. دیگر عملگر محدوده‌ای، عملگر  محدوده‌ بسته‌ای نام دارد، که به ترتیب سه نقطه(...) شناخته می شود. این عملگر، محدوده‌ای از مقادیر را مشخص می کند که شامل مقدار تحت هر دو جناح عملگر محدوده‌ بسته‌ای می شود. به عنوان مثلا الگوی 1...5، محدوده‌ای از مقادیر را مشخص می کند که از 1 تا 5 را شامل می شود با این حساب که خود 5 نیز در نظر گرفته خواهد شد.
5-تعریف متغیرها و ثوابت :
حال اجازه دهید تا مثالی که پیشتر ذکر شد را بررسی کنیم :


let someConstant : String = "This is a constant";
var someVariable : String = "This is a variable";

در زبان Swift، ما ثوابت را با استفاده از لغت کلیدی let و متغیرها را با استفاده لغت لیدی var تعریف می کنیم. نماد کلن یا همان دو نقطه نیز یک سازنده بوده که به منظور تعریف نوع ثابت یا متغیر مورد استفاده قرار می گیرد. در مثال بالا ما یک ثابت و یک متغیر از جنس String تعریف کرده‌ایم.
ما همچین می توانیم متغیرها و ثوابت را با یک مقدار پیشفرض(در اینجا رشته‌ای) ارزش دهی اولیه کنیم. در زبان برنامه نویسی Swift، نحوه تعریف رشته ها درست به مانند رشته‌های C در زبان شیگرای C می باشد. یعنی این نوع رشته‌ها احتیاجی به نماد @ پیش از خود ندارند.
زبان شیگرای C، قویاً یک زبان مبتنی بر نوع است. این بدان معناست که نوع یک متغیر یا پارامر باید همیشه و در همه حال مشخص باشد. از آن طرف Swift هم یک زبان مبتنی بر نوع بوده، با این تفاوت که زبان Swift کمی نسبت به زبان شیگرای C هوشمندتر عمل می کند. چرا که کامپایلر خود نوع متغیر را پیشبینی می کند. با وجود نوع ساختار کامپایلر مطمئن هستیم که هیچ نوع چندریختی نادرست از متغیرها بدون اختیار و کنترل صریح شما رخ نخواهد داد.
اگر ما مثال بالا را به صورت زیر بازنویسی کنیم، استنباط نوع letting کار خود را انجام خواهد داد :


let someConstant = "This is a constant";
var someVariable = "This is a variable";
let someInt = 1;
let someFloat = 1.0;

با این بازنویسی، مجموعه کد، بسیار بهتر و قابل فهمتر به نظر می رسد. کامپیالر آنقدر هوشمند هست که بتواند بفهمد someInt، یک ثابت از جنس عددی  و someFloat نیز یک ثابت اعشاری است.
6-رشته ها :
یکی از روش های ساده برای اینکه از قدرت یک زبان مطلع شویم این است که بررسی کنیم ببینیم زبان مورد نظر ما چگونه دستکاری و ایجاد تغییر در رشته ها را مدیریت می کند. زبان شیگرای C از توابع و ویژگی های خاص و قدرمتندی برخوردار است که به ما این امکان را می دهد تا رشته ها را بهتر از اکثر زبان های برنامه نویسی مدیریت کنیم. اما با این وجود بسته به نیاز شما، استفاده و مدیریت رشته‌ها بعضی مواقع می تواند طویل و گیج کننده به نظر برسند.
برای بررسی این موضوع کارمون را با ذکر یک مثال از زبان شیگرای C آغاز می کنیم. با ما همراه باشید.
به منظور الحاق دو رشته در زبان شیگرای C، ما از روند دستوری زیر استفاده می کنیم :

NSString *string = @"Hello ";
NSString *greeting = [string stringByAppendingString:@"World!"];

 

از آن طرف ما در زبان Swift برای الحاق یک رشته به رشته دیگر از عملگر + استفاده می کنیم. به سادگی دستورات زیر دقت کنید :



let string = "Hello "
let greeting = string + "World!"

 

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

 

let string = "你好世界"

 

ما می توانیم بسته به نیاز خود بین کاراکترهای موجود در یک رشته با استفاده از دستور for..in عمل تکرار را برای بررسی هر کاراکتر و به منظور ایجاد شرطی خاص اعمال کنیم. به دستورات زیر دقت کنید. ما از یک حلقه for..in به منظور تکرار و کاوش بین کاراکترهای یونیکد بهره برده ایم :

 

let str = "Hello";
for char in str {
    println(char);
}
 
// outputs
// H
// e
// l
// l
// o



آخرین چیزی که ما تمایل داریم پیش از ادامه کار  در مورد رشته ها خدمت شما بیان کنیم بحث string interpolation یا درون یابی رشته است. در زبان شیگرای C، اگر ما بخواهیم یک رشته را همراه با یک متغیر به خروجی ارسال کنیم، می توانیم از الگوی [NSString stringWithFormat:] استفاده کنیم. در زبان Swift نیز متغیرها می توانند لابه لای رشته ها گنجانده شوند به مثال زیر دقت کنید :

 


let x = 4;
let y = 5;
 
println( "\(x) x \(y) = \(x*y)")
 
// outputs
// 4 x 5 = 20

 


به این ترتیب که برای استفاده از string interpolation، متغیر یا فراخوانی تابع را در پرانتزها قرار داده، و سپس یک نماد بک اسلش در ابتدای آن به مانند الگوی \( expression) اضافه می کنیم.
7-آرایه ها و dictionaries  :
به عنوان یک برنامه نویس زبان شیگرای C، شما پیش از این با آرایه ها و دیکشنری ها آشنا هستید. زبان Swift نیز از یک سری کلاسهای آرایه ای و مجموعه‌ای برخوردار بوده که چند ویژگی اضافی نیز به آنها افزوده شده است.
حال اجازه دهید تا ببینیم چطور باید از مجموعه ها در Swift بهره ببریم. با ما همراه باشید.
در زبان برنامه نویسی Swift، مجموعه ها به عنوان Array(آرایه) و Dictionary شناخته می شوند. اعلان یک آرایه در زبان Swift از نظر ظاهری مشابه با اعلان آن در زبان شیگرای C است. به این صورت که باید برای اعلان از یک جفت براکت [ ] البته بدون استفاده از  نماد @ پیش از براکتها بهره برد.

 

let someArray:[String] = ["one","two","three"];
var someOtherArray:[String] = ["alpha","beta","gamma"];

 

همین شیوه برای دیکشنریها نیز صدق می کند. به هر حال شما می توانید به جای استفاده از آکولادها از براکت ها بهره ببرید.



let someDictionary:[String:Int] = ["one":1, "two":2, "three":3];
var someOtherDictionary:[String:Int] = ["cats":1, "dogs":4, "mice":3];


9-تغییر پذیری :
اگر یک شی آرایه معادل با یک شی آرایه مثلا با نام NSArray و همچنین یک شی Dictionary نیز معادل با یک شی NSDictionary دیگر باشد. حال ما چگونه باید آرایه و دیکشنری های تغییر پذیر در زبان برنامه نویسی Swift ایجاد کنیم؟
جواب این سوال واقعاً ساده است. برای این منظور کافی است تا شیء را به عنوان متغیر اعلان کنیم. به عبارت دیگر، در مثال پیشین، someArray معادل یک نمونه NSArray بوده و someotherArray نیز معادل یک نمونه NSMutableArray می باشد. این حالت تحت دیکشنری ها نیز صدق می کند. به این صورت که در مثال قبل someDictionary معادل یک نمونه NSDictionary بوده، و someOtherDictionary نیز معادل نمونه NSMutableDictionary می باشد. درست همه چیز بر طبق قاعده.درسته؟
با این وجود که دیکشنری ها و آرایه های زبان شیگرای C همچنین می توانند شامل اشیاء باشند، اما در Swift مجموعه ها علاوه بر اینکه می توانند شامل اشیاء باشند همچنین قادر هستند شامل نوع داده های اولیه‌ای مانند عددی و اعشاری نیز باشند.
یک تفاوت مهم دیگر این زبان با زبان شیگرای C این است که مجموعه ها در Swift مبتنی بر نوع هستند، حال این نوع ها می توانند ضمنی باشند یا از طریق تبدیل نوع در زمان اجرا کار خود را پیش ببرند. همیشه دقت داشته باشید که با مشخص کردن نوع اشیاء در هنگام کار با مجموعه ها، زبان Swift ایمنی اضافه تری را به این مجموعه ها اضافه میکند.
حتی با این وجود که ما به هنگام اعلان یک متغیر می توانیم از ذکر نوع آن صرف نظر کنیم اما نباید فراموش کرد که کامپیالر به صورت خودکار نوع داده را به اشیاء تحت مجموعه ها نسبت خواهد داد. به طور کلی type inference یا همان عمل انتساب خودکار نوع داده سبب خوانا تر شدن و مشخص تر شدن کارایی دقیق کد خواهد شد.
ما می توانیم شیءهای Dictionary و Array را که پیش از این اعلان کرده ایم به مانند زیر از نو دوباره تعریف کنیم :

 

let someArray = ["one","two","three"];

var someOtherArray = ["alpha","beta","gamma"];
let someDictionary = ["one":1, "two":2, "three":3];
var someOtherDictionary = ["cats":1, "dogs":4, "mice":3];

 

در این حالت، کامپیالر مجموعه ها را در طول ارزش دهی اولیه خود بررسی کرده و نوع آن ها را بررسی و مشخص می کند. به عبارت دیگر کامپایلر می فهمد که someArray و someOtherArray در واقع یک مجموعه ای از شیءهای String بوده و همچنین someDictionary و someOtherDictionary نیز دیکشنری هایی با نوع String و با مقداری از نوع Int محاسبه می شوند.
10-دستکاری مجموعه :
اضافه کردن یک شیء یا یک آرایه دیگر به آرایه موجود، خیلی مشابه به رشته ای است که می خواهیم به رشته دیگر با استفاده از عملگرد + اضافه کنیم. به مثال های زیر دقت کنید :

 

var array = ["one","two","three"]; // mutable array
array += "four"; // add element to array
array += ["five","six"]; // add array to array

 

دستکاری دیکشنری ها، به همین سادگی‌ای است که در زیر ملاحظه می کنید :

 

var dictionary = ["cat": 2,"dog":4,"snake":8]; // mutable dictionary
dictionary["lion"] = 7; // add element to dictionary
dictionary += ["bear":1,"mouse":6]; // add dictionary to dictionary

 

11-مجموعه های نوع دار :
اگر به یاد داشته باشید ما پیش از این ذکر کردیم که مجموعه ها در زبان Swift مبتنی بر نوع هستند. حال به نظر شما این به چه معناست؟ اگر ما یک مجموعه که از شی های رشته‌ای تشکیل شده تعریف کنیم، شما می توانید شیءهای رشته‌ای را به آن مجموعه اضافه کنید. البته قصور در انجام دقیق این کار منجر به تولید خطا خواهد شد.
حال اجازه دهید تا با ذکر یک مثال قضیه را بیشتر روشن کنیم. ما یک مجموعه از شیءهای Car را تعریف می کنیم. تکه کد زیر نشان می دهد که ما یک کلاس Car و یک آرایه تغییر پذیر cars که شامل سه نمونه Car است تعریف کرده ایم :

 

// Car class
class Car {
    var speed = 0.0
    
    func accelerate(by: Double = 1.0) -> Bool {
        speed += by;
        return true;
    }
}
 
var cars = [ Car(), Car(), Car()];

 

در پشت صحنه، کامپایلر نوع آرایه را پیش بینی می کند. اگر ما بخواهیم یک نمونه جدید Car را به مجموعه اضافه کنیم، به سادگی می توانیم با استفاده از عملگر + به صورت زیر عمل کنیم :

 

cars += Car();

 

به هر حال اضافه کردن یک شیء از نوع متفاوت سبب بروز یک خطا خواهد شد :

 

cars += "Some String"; // this will cause a compiler error

 

این حالت ویژگی ای را اضافه کرده است که سبب ایمنی نوع در گرفتن اشیاء از مجموعه ها خواهد شد. ناگفته نماند که این حالت همچنین نیاز برای چندریختی اشیاء مجموعه را پیش از استفاده از بین می برد.
در مثال مورد بحث ما، یک شیء Car از یک متد accelerate برخوردار است. از آن طرف چون یک مجموعه مبتنی بر نوع بوده، ما می توانیم یک آیتم از آرایه را گرفته و در تنها یک خط کد به یکباره، متدی را روی آن اعمال کنیم. ناگفته نماند که لازم به نگرانی در مورد نوع اجزاء وجود ندارد چرا که مجموعه، تنها شامل اشیاء Car است.

 

cars[0].accelerate(by: 2.0);

 

به منظور انجام همین عملیات در زبان شیءگرای C و البته با همین سطح ایمنی، شما باید از تکه کد زیر بهره ببرید :

 

id pointer = cars[0];
if([pointer isKindOfClass:[Car class]]) {
    Car* car = (Car*) pointer;
    [car accelerateBy:2.0];
}

 

در نهایت نیز برای بررسی جزء به جزء آرایه از یک حلقه for..in به شکل زیر استفاده می کنیم :

 

for car in cars {
    car.accelerate(by:2.0);
}

 

همچنین برای انجام همین عمل تحت یک دیکشنری نیز ما از یک حلقه  for..in به مانند زیر بهره می بریم :

 

for (key,value) in someDictionary {
    println("Key \(key) has value \(value)"
}

 

همانطور که ملاحظه می کنید مجموعه های نوع دار، جزء یکی از ویژگی های قدرتمند زبان برنامه نویسی Swift محسوب می شوند.
نتیجه گیری :
خب ما تا اینجای کار کمی در مورد زبان Swift اطلاعات کسب کرده و حالا باید این مقدار اطلاعات را پایه و اساس برای ادامه کار خود قرار دهید. پیشنهاد ما این است که هر چه سریعتر ، Xcode 6 را دانلود کرده و چیزهایی را که در این مقاله یاد گرفته اید را به صورت عملی تحت ویژگی جدید Playground به کار ببرید.
مقاله فعلی هم با این مقدار اطلاعات به پایان رسید. در مقاله بعدی از این سری ما مواردی همچون tupleها، توابع، closureها، کلاس ها و چند گزینه دیگر را مورد بررسی قرار خواهیم داد. شما همچنین در ادامه کار یاد خواهید گرفت که چگونه مدیریت حافظه در زبان برنامه نویسی Swift شکل می گیرد. منتظر مقالات بعدی ما باشید.

مترجم:هادی نجار

منبع:code.tutsplus.com

تعداد بازدید : 1196

نظرات
محمود
با سلام خيلي متن آموزشي خوبي بود اميدوارم همچنان ادامه داشته باشد ممنون از زحمات شما
سجاد قمری
استفاده کردیم
ناشناس
خیلی عالی بود و خسته نباشید
ارسال نظر

سوال امنیتی : مجموع دو عدد 6 و 4 =