در جلسه قبل با دستور شرطی if آشنا شدیم، در این جلسه میخواهیم با یک نوع دیگر از دستورات شرطی آشنا بشویم، حالت های زیر را در نظر بگیرید.
بنظرتون نوشتن چنین برنامه ای با if امکان پذیر است؟ بله! امکان پذیر است اما برنامه شما اصلا ظاهر خوبی پیدا نمیکند و برای مثال اگر بخواهید اعداد یک تا ده را چاپ کنید که خیلی نامرتب تر هم میشود! در این مواقع که تعداد حالت های بررسی یک شرط زیاد میشود از دستور شرطی switch استفاده میکنیم.
به نمونه ای از switch دقت کنید.
switch
value
{
case
pattern1:
// first part of code...
case
pattern2:
// second part of code...
default:
// default code...
}
حالا یک مثال با متغیر را با هم بررسی کنیم، که در مورد case ها چند تا نکته بگیم.
let
weather
=
"Rainy"
switch
weather
{
case
"Sunny":
print("it's sunny.")
case
"Cloudy":
print("it's cloudy.")
case
"Rainy":
print("it's rainy.")
default:
print("have a good day!")
}
خروجی:
it's rainy.
default تقریبا کار elseرا انجام میدهد، یعنی اگر هیچ کدام از حالت های case برقرار نباشند بخش مربوط به default اجرا میشود.case ها، و اجرا کردن کدهای مربوط به آن از switch خارج میشود و بقیه case ها بررسی نمیشوند.اگر نیاز دارید که بعد از اجرای یک case بقیه مورد ها هم بررسی شوند میتوانید از کلمه کلیدی fallthrough استفاده کنید.
let
day
=
3
switch
day
{
case
1:
print("saturday.")
case
2:
print("sunday")
case
3:
print("monday")
fallthrough
case
4:
print("tuesday")
case
5:
print("wednesday")
case
6:
print("thursday")
case
7:
print("friday")
default:
print("i have a lot of work to do!")
}
خروجی:
monday i have a lot of work to do!
همانطور که میبینید بعد از این که وارد case مربوط به 2 شد چون در آن کلمه fallthrough وجود داشت، بقیه کد را نیز بررسی کرد و default را هم اجرا کرد.
این امکان وجود دارد که بتوانیم بجای گذاشتن یک متغیر در pattern از یک بازه یا range استفاده کنیم، به مثال زیر دقت کنید.
let
number
=
9
switch
number
{
case
0...10:
print("under 10.")
case
11...20:
print("between 10 and 20.")
case
21...30:
print("between 20 and 30.")
default:
print("invalid number!")
}
خروجی:
under 10.