Dictionary-For-in

حلقه‌ها بسیار پرکاربرد هستند،در قبل مثالهایی را تمرین کردیم که میتوانستیم با استفاده از حلقه‌ها درون آرایه‌ها را پیمایش و یکی یکی آنها را چاپ کنیم،اما اگر بخواهیم با استفاده از حلقه for دیکشنری ها را نیز پیمایش کنیم باید چه کنیم؟ در ادامه همراه باشید. 

کاربردهای حلقه For آنقدر زیاد هستند که احتیاجی به مثالهای زیادی برای فراگیری آنها ندارید،چرا که در طول آموزش زبان برنامه نویسی(در اینجا Swift) تقریبا همیشه با آنها سرو کار خواهید داشت،در هر صورت تمرین مثالها میتواند آمادگی شما را با مواجهه با مثالهای سخت‌تر در آینده،تضمین کند.به مثال زیر توجه کنید:

٭ تمامی کدها و مثال ها را می توانید در بخش playground تست کنید.

let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]

for (animalName, legCount) in numberOfLegs { 

    print("\(animalName)s have \(legCount) legs")
}
در مثال بالا ابتدا یک دیکشنری از نام انواع حشرات (کلید) و تعداد پا هرکدام(مقدار Value) ساخته‌ایم.همانطور که به خاطر دارید در حلقه‌های For-in برای پیمایش یک آرایه،صرفا یک شمارنده میساختیم(Index)، و خود کامپایلر متوجه میشد که این شمارنده(یا در اصل:متغیر) در هر لحظه مقدار کدام سلول از آرایه را نگه داری میکند،اما در دیکشنری ها به غیر از (مقدار)،ما نیاز به نگه‌داری (کلید) هر خانه از دیکشنری را نیز داریم،پس باید برای هر کدام (کلید و مقدار) یک شمارنده‌ی جدا تعریف کرد،در این مثال animalName مقدار (کلید) هر خانه،که شامل نام حشره میشود را نگه داری میکند و legCount اشاره به مقدار (Value) دارد، که تعداد پای هر حشره متناظر با نام آن را نگه داری میکند. پس در زمان چاپ خروجی، میتوانیم از این به اصطلاح (شمارنده‌ها) به عنوان متغیر نگه دارنده‌ی (مقدار و کلید)برای چاپ خروجی مناسب استفاده کرد.خروجی مثال بالا را ملاحظه کنید:
(برای مشاهده تصویر در اندازه واقعی روی آن کلیک کنید)
OUTPut-for-in
در مثال زیر بررسی خواهیم کرد که چگونه میتوان در یک حلقه،صرفا (کلید) یا (مقدار) دیکشنری را استخراج کرد:
let airports = ["IranAir":176, "mahanAirLine":245, "TurkishAirLine":398]

for airportName in airports.keys { 

    print("Airport Name: \(airportName)")
}

در این مثال توانستیم با استفاده از فراخوانی کلید‌واژه‌ی keys،صرفا مقادیر کلید این دیکشنری را استخراج و در دستور پرینت لاین چاپ کنیم.خروجی به صورت زیر خواهد بود :

OUTPUT-Dictunary-For-Loop

همچنین میتوانیم با استفاده از فراخوانی مقدار Value این دیکشنری به صورت زیر عمل کرد:

for airportCode in airports.values {

    print("Airport Number: \(airportCode)")
}

خروجی به صورت زیر میباشد:

OutPut-Dictiunary-for-in

در انتهای مطلب جلسه‌ی قبل چالشی را طرح کردیم، جواب چالش به صورت زیر میباشد:

 

let base = 3
let power = 10
var answer = 1

for _ in 1...power {

    answer *= base
}
print("\(base) to the power of \(power) is \(answer)")

نکته: در این مثال،به جای استفاده از یک متغیر شمارنده، به نام index، از یک نشانه زیرخط (ـ)استفاده کردیم،استفاده از این نامگذاری در زمانهایی که نمیخواهیم به شمارنده، اشاره ای در خروجی داشته باشیم کاربرد دارد،در غیر این صورت بهتر است از همان متغیر index برای ذخیره‌ی قدمهای حلقه استفاده شود.

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