در جلسه قبل با دستور شرطی 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.