اندیس ها و کران ها (Indices & Bounds)
می خواهیم «اندیس ها و کران ها» را بفهمیم. اندیس یعنی آدرس هر خانه. کران ها یعنی شروع و پایان بازه. در سوئیفت، startIndex آغاز است و endIndex یکی بعد آخر است. مثل صف مدرسه؛ تابلوی پایان، پشتِ نفر آخر است.
شناخت اندیس و کران با مثال
از startIndex و endIndex کمک بگیر. با indices فقط روی موقعیت های معتبر می چرخی. بیرون زدن از محدوده، برنامه را هنگام اجرا می ترکاند.
let items = [10, 20, 30]
print(items.startIndex) // 0
for i in items.indices {
print("index: \(i), value: \(items[i])")
}
زیرنویسی امن و محدوده معتبر
اندیس های معتبر از صفر تا قبلِ count هستند؛ یعنی 0..<items.count. بنابراین با این بازه خیالت راحت است و خطای بیرون زدن نمی گیری.
let items = [10, 20, 30]
print(items[0]) // OK
// print(items[3]) // out of bounds
نکته: endIndex برای زیرنویسی معتبر نیست. آخرین اندیس معتبر برابر است با items.index(before: items.endIndex).
آخرین اندیس معتبر
اگر آخرین عنصر را می خواهی، یک قدم قبل از endIndex برو. این روش دقیق و ایمن است.
let items = [10, 20, 30]
let lastIndex = items.index(before: items.endIndex)
print(lastIndex) // 2
print(items[lastIndex]) // 30
گام های تمرینی
- یک آرایه بساز و
startIndexرا چاپ کن. - با
indicesروی همه اندیس ها بگرد. - آخرین اندیس معتبر را حساب کن و مقدارش را چاپ کن.
برای ادامه کار با برش ها به برش های آرایه برو. همچنین روش پیمایش را در حلقه روی آرایه مرور کن. اگر لازم شد، همین صفحه اندیس ها و کران ها را دوباره ببین.
جمع بندی سریع
startIndexاولین مکان است.endIndexیکی بعد آخر است.- برای چرخش امن از
indicesاستفاده کن. - بازه معتبر:
0..<count. - آخرین اندیس:
index(before: endIndex).