با سلام خدمت همه علاقمندان به برنامه نویسی Swift ، در وبسایت رادیب، در قسمت های قبل با متغیر ها آشنا شدید، در این قسمت قصد داریم در مورد آرایه ها صحبت کنیم.
اگر قسمت های قبلی آموزش را ندیده اید، این بخش را مشاهده بفرمایید
انواع مجموعه:
سه نوع collection داریم در زبان سوئیفت
آرایه ها با ارایه ها در جلسه قبل آشنا شدید.
2. مجموعه ها (sets)
طبق شکل مجموعه ها مقادیر متمایز از یک نوع را بدون توجه به ترتیب آنها ذخیره می کنند. وقتی که ترتیب عناصر مهم نباشه می تونید از set ها به جای آرایه ها استفاده کنید
var letters = (Set with (letters.count) items.") // "letters is of type Set with 0 items."
در مثال بالا یک مجموعه خالی از نوع کاراکتر ایجاد کردیم .
var letters = (Set with (letters.count) items.") // "letters is of type Set with 0 items."
Letters.count تعداد عناصر را در مجموعه نمایش می دهد ک صفر است.
letters.insert("a") // مجموعه شامل یک عنصر است از نوع کاراکتر
letters = []
مجموعه بالا در حال حاضر خالی شده ولی کماکان از نوع کاراکتر است
ایجاد مجموعه با لیترال های آرایه :
var favorite: Set = [\"red\", \"blue\", \"black\"]
// مجموعه favorit با سه عنصر مقدار دهی اولیه شد
متغیر favorit به عنوان مجموعه ای از رشته ها معرفی شده پس تنها مقادیر رشته ای داخل این متغیر باید قرار داده شود. چون مقادیر همه از یک نوع هستند و با توجه به اینکه در سوئیفت باید اعلان نوع را داشته باشیم می توانیم به صورت زیر هم مجموعه بالا رو بنویسیم.
var favorite: Set= [\"red\", \"blue\", \"black\"]
در مجموعه ها مباحثی مثل اجتماع، اشتراک وجود دارد
Intersect(_:) اشتراک بین دو مجموعه است
exclusiveOr(_:) xor که مقادیر هر دو مجموعه را به غیر از مقادیر مشترک داخل ارایه قرار می دهد.
Union(_:) اجتماع
Subtract(_:) تفاضل دو مجموعه
let oddDigits: Set = [1, 3, 5, 7, 9] // اعداد فرد زیر 10
let evenDigits: Set = [0, 2, 4, 6, 8] // اعداد زوج زیر 10
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7] // اعداد اول
در مثال بالا ثابت هایی از نوع مجموعه تعریف کردیم
oddDigits.union(evenDigits).sort()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.intersect(evenDigits).sort()
// []
oddDigits.subtract(singleDigitPrimeNumbers).sort()
// [1, 9]
oddDigits.exclusiveOr(singleDigitPrimeNumbers).sort()
// [1, 2, 9]
در مثال بالا از متد های اجتماع و اشتراک و xor و تفاضل مثالی زده شده در بالا .sort مقادیر موجود در مجموعه جدید را مرتب سازی می کند.
Collection بعدی dictionary نام دارد. که مقادیر چندگانه از یک نوع را ذخیره میکند.هر مقدار در dictionary به همراه یک کلید یکتا است. و تمامی کلید ها هم از یک نوع هستند. نوع dictionary با نوع کلید و مقدار کنار همدیگر مشخص می شود.
یک dictionary بانوع [String:Int] کلیدی از نوع string و مقداری از نوع Int دارد
به این صورت تعریف می شود: var dictionary: [String:Int]
به صورت زیر متغیری که از نوع dictionary هست رو مقدار دهی اولیه می کنیم
var dictionary: [String:Int] = [
"one" : 1,
"two" : 2,
"three" : 3
]
برای ایجاد یک dictionary خالی به صورت زیر متغیر را تعریف میکنیم.
var emptyDictionary: [Int:Int] = [
var stringsAsInts: [String:Int] = [
"zero" : 0,
"one" : 1,
"two" : 2,
"three" : 3,
"four" : 4,
"five" : 5,
"six" : 6,
"seven" : 7,
"eight" : 8,
"nine" : 9
]
1. stringsAsInts["zero"] // مقدار این کلید 0 است
2. stringsAsInts["three"] // مقدار این کلید 3 است
3. stringsAsInts["ten"] // nil
در مثال بالا متغیر stringsAsInts از نوع dictionary تعریف کردیم برای اینکه مقادیر را فراخوانی کنیم از اسم متغیر به همراه کلید استفاده می کنیم اگر متغیر رو در حالت 1 و 2 در خروجی چاپ کنیم مقادیر مربوط ب هر کلید رو چاپ میکنه اما گزینه سوم مقدار null رو بر میگردونه چون چنین کلیدی در متغیر بالا موجود نیست
آپدیت کردن یک مقدار یا اضافه کردن کلید با مقداری جدید به شکل زیر است:
var stringsAsInts: [String:Int] = [
"zero" : 0,
"one" : 1,
"two" : 2
]
stringsAsInts["three"] = 3
کافیست که کلید مربوطه را به همراه نام متغیر قرار دهیم و مقدار جدید را داخل ان بریزیم.
یا از متود برای اپدیت کردن مقدار یک کلید استفاده کنید.
var stringsAsInts: [String:Int] = [
"zero" : 0,
"one" : 1,
"two" : 2
]
stringsAsInts.updateValue(3, forKey: "three") // کلیدی به این نام نداریم پس null
stringsAsInts.updateValue(10, forKey: "tow") // 2
برای حذف مقدار یک کلید از متغیر نوع dictionary یا مقدار ان را برابر null قرار می دهیم یا از متود به شکل زیر استفاده می کنیم:
stringsAsInts["three"] = nil
stringsAsInts.removeValueForKey("three")//مقدار این کلید را حذف میکند
پس متغیر ها از نوع dictionary کلید ها و مقادیر اگر نوعشان را بخواهیم نمایش دهیم به شکل های زیر است
var stringsAsInts: [String:Int]
var stringsAsInts: [Int:String]
var stringsAsInts: [Int:Int]
var stringsAsInts: [String:String]
تا به اینجا مثال هایی زدیم که همگی متغیر از نوع dictionary بودند! حتی می توانیم ثابت ها را هم به همین شکل تعریف کنیم و مقدار این ثایت ها از این نوع همیشه همان مقدار دهی اولیه باقی می ماند
let powersOfTwo = [
1 : 2,
2 : 4,
3 : 8,
4 : 16
]
1. powersOfTwo[5] = 32 // شامل ارور است
2. powersOfTwo.removeValueForKey(1)// شامل ارور
در شماره 1 کلید و مقداری جدید قصد داریم اضافه کنیم اما در خروجی به ارور برخورد خواهیم کرد.
در شماره 2 نیز قصد داشتیم مقدار یک کلید را حذف کنیم ولی در خروجی باز هم به ارور برخورد خواهیم کرد.