با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش Swift را دنبال می کنند. گاهی ممکن است که نیاز داشته باشید که مجموعه ای از مقادیر را بصورت یک واحد تعریف کنید تا برای تعریف دستورات و قوانین خاصی به آن ها دسترسی داشته باشید. برای این منظور از یک نوع خاصی در اغلب زبان های برنامه نویسی استفاده می شود که به عنوان enum یا شمارنده شناخته می شوند، شمارنده ها در Swift نیز ارائه شده و کاربرد آن مشابه زبان ها برنامه نویسی دیگر است. در ادامه ی مباحث این بخش برای آشنایی بیشتر با شمارنده ها در Swift با ما همراه باشید.
در ادامه ی این آموزش شما را با سینتکس و نحوه ی استفاده از شمارنده ها در Swift آشنا می کنیم.
شمارش یک نوع داده تعریف شده توسط کاربر است که شامل مجموعه ای از مقادیر مرتبط است.
کلید enum برای تعریف نوع داده ثبت شده استفاده می شود.
شمارنده ها در Swift همانند ساختار C و Objective C است:
شمارشده ها با کلمۀ enum معرفی می شوند و کل تعریف خود را در یک جفت براکت قرار می دهند:
1 2 3 | enum enumname { // enumeration values are described here } |
برای مثال تعریف روزهای هفته با استفاده از شمارنده ها در Swift بصورت زیر است:
1 2 3 4 5 6 | enum DaysofaWeek { case Sunday case Monday --- case Saturday } |
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | enum names { case Swift case Closures } var lang = names.Closures lang = .Closures switch lang { case .Swift: print("Welcome to Swift") case .Closures: print("Welcome to Closures") default: print("Introduction") } |
نتیجه ی کامپایل و اجرای کد فوق به صورت زیر خواهد بود:
1 | Welcome to Closures |
در Swift 4 برای ذسترسی به شمارنده باید از نام آن ها استفاده کرد و نام آن ها نیز باید حتما با حروف بزرگ آغاز شود.
با استفاده از دستور ‘Switch’ در Swift 4 می توان به آیتم های شمارنده دسترسی پیدا کرد.
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | enum Climate { case India case America case Africa case Australia } var season = Climate.America season = .America switch season { case .India: print("Climate is Hot") case .America: print("Climate is Cold") case .Africa: print("Climate is Moderate") case .Australia: print("Climate is Rainy") } |
نتیجه ی کامپایل و اجرای کد فوق به صورت زیر خواهد بود:
1 | Climate is Cold |
در مثال فوق نام چند کشور در شمارنده ی Climate اعلام شده و در دستور Switch برای انتخاب هر یک از شهرها نوع آب و هوای آن اعلام می شود.
Associated Values | Raw Values |
Different Datatypes | Same Datatypes |
{“Ex: enum {10,0.8,”Hello | {Ex: enum {10,35,50 |
ارزش ها بر مبنای ثابت یا متغیر ایجاد می شوند. | Prepopulated Values |
در هر بار اعلام می شود. | ارزش برای عضو یکسان است. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | enum Student { case Name(String) case Mark(Int,Int,Int) } var studDetails = Student.Name("Swift 4") var studMarks = Student.Mark(98,97,95) switch studMarks { case .Name(let studName): print("Student name is: \(studName).") case .Mark(let Mark1, let Mark2, let Mark3): print("Student Marks are: \(Mark1),\(Mark2),\(Mark3).") } |
نتیجه ی کامپایل و اجرای کد فوق به صورت زیر خواهد بود:
1 | Student Marks are: 98,97,95. |
برای نمونه در مثال فوق دسترسی به آیتم های شمارنده ی student به صورت زیر است:
1 2 | var studDetails = Student.Name("Swift") var studMarks = Student.Mark(98,97,95) |
مقادیر خام میتوانند رشته ها، کاراکترها یا هر یک از انواع عدد صحیح یا اعداد اعشاری باشند.
هر مقدار خام باید در تعریف شمارنده یکتا و منحصر به فرد باشد.
مثال :
1 2 3 4 5 6 7 | enum Month: Int { case January = 1, February, March, April, May, June, July, August, September, October, November, December } let yearMonth = Month.May.rawValue print("Value of the Month is: \(yearMonth).") |
نتیجه ی کامپایل و اجرای کد فوق به صورت زیر خواهد بود:
1 | Value of the Month is: 5. |
از شمارنده ها در Swift می توان برای تعریف مقادیر مرتبط به هم در برنامه ، مانند نام روزهای هفته ، نام شهرهای یک استان یا کشور و … استفاده کرد. از این رو ممکن است در برخی برنامه کاربرد زیادی داشته باشند.