English 中文(简体)
Swift - Enumerations
  • 时间:2024-09-17

Swift - Enumerations


Previous Page Next Page  

An enumeration is a user-defined data type which consists of set of related values. Keyword enum is used to defined enumerated data type.

Enumeration Functionapty

Enumeration in Swift 4 also resembles the structure of C and Objective C.

    It is declared in a class and its values are accessed through the instance of that class.

    Initial member value is defined using enum intiapzers.

    Its functionapty is also extended by ensuring standard protocol functionapty.

Syntax

Enumerations are introduced with the enum keyword and place their entire definition within a pair of braces −

enum enumname {
   // enumeration values are described here
}

For example, you can define an enumeration for days of week as follows −

enum DaysofaWeek {
   case Sunday
   case Monday
   ---
   case Saturday
}

Example

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")
}

When we run the above program using playground, we get the following result −

Welcome to Closures

Swift 4 enumeration does not assign its members default value pke C and Objective C. Instead the members are exppcitly defined by their enumeration names. Enumeration name should start with a capital letter (Ex: enum DaysofaWeek).

var weekDay = DaysofaWeek.Sunday 

Here the Enumeration name DaysofaWeek is assigned to a variable weekday.Sunday. It informs the compiler that the datatype belongs to Sunday will be assigned to subsequent enum members of that particular class. Once the enum member datatype is defined, the members can be accessed by passing values and further computations.

Enumeration with Switch Statement

Swift 4 Switch statement also follows the multi way selection. Only one variable is accessed at a particular time based on the specified condition. Default case in switch statement is used to trap unspecified cases.

enum Cpmate {
   case India
   case America
   case Africa
   case Austrapa
}

var season = Cpmate.America
season = .America
switch season {
   case .India:
      print("Cpmate is Hot")
   case .America:
      print("Cpmate is Cold")
   case .Africa:
      print("Cpmate is Moderate")
   case .Austrapa:
      print("Cpmate is Rainy")
   
}

When we run the above program using playground, we get the following result −

Cpmate is Cold

The program first defines Cpmate as the enumeration name. Then its members pke India , America , Africa and Austrapa are declared belonging to class Cpmate . Now the member America is assigned to a Season Variable. Further, Switch case will see the values corresponding to .America and it will branch to that particular statement. The output will be displayed as "Cpmate is Cold". Likewise all the members can be accessed through switch statements. When the condition is not satisfied it prints by default Cpmate is not predictable .

Enumeration can be further classified in to associated values and raw values.

Difference between Associated Values and Raw Values

Associated Values Raw Values
Different Datatypes Same Datatypes
Ex: enum {10,0.8,"Hello"} Ex: enum {10,35,50}
Values are created based on constant or variable Prepopulated Values
Varies when declared each time Value for member is same

Enum with Associated Values

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).")
}

When we run the above program using playground, we get the following result −

Student Marks are: 98,97,95.

Consider for example to access the students name and marks secured in three subjects enumeration name is declared as student and the members present in enum class are name which belongs to string datatype, marks are represented as mark1, mark2 and mark3 of datatype Integer. To access either the student name or marks they have scored

var studDetails = Student.Name("Swift")
var studMarks = Student.Mark(98,97,95)

Now, the switch case will print student name if that case block is executed otherwise it will print the marks secured by the student. If both the conditions fail, the default block will be executed.

Enum with Raw Values

Raw values can be strings, characters, or any of the integer or floating-point number types. Each raw value must be unique within its enumeration declaration. When integers are used for raw values, they auto-increment if no value is specified for some of the enumeration members.

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).")

When we run the above program using playground, we get the following result −

Value of the Month is: 5.
Advertisements