Эта статья является частью моей серии Учебник по программированию на Swift.

Основная цель объявления типа данных — избежать ненужных связанных ошибок в вашей программе, сделав ваш код чистым и организованным.

В Swift есть 6 основных типов данных: строка, символ, целое число, число с плавающей запятой, двойное число и логическое значение. Эти типы данных созданы для того, чтобы Swift мог хранить различные типы значений как в переменных, так и в константах. Затем есть перечисления, сокращение для перечислений, которые позволяют вам настраивать тип данных и определять значения внутри.

Чтобы оценить полезность настройки типа данных с перечислениями, давайте сравним использование оператора switch без перечислений и с перечислениями.

Ниже приведен оператор switch без использования перечислений.

E.g.

var fellowRace: String = "Aragorn" 
switch fellowRace {
case "Aragorn": print("Human") 
case "Legolas": print("Elf")
case "Gimli": print("Dwarf") 
case "Frodo": print("Hobbit") 
default: print("N/A")
}

Вывод будет:

Human

Приведенный выше код, очевидно, работает нормально. Но будут ситуации, когда вы можете неправильно написать «Арагорн» на «Арагон». Если вы пишете сложную программу, опечатка в вашем коде — это нехорошо в реальной ситуации.

Ниже приведен оператор switch, основанный на перечислениях.

E.g.

enum fellowRace: String {
  case Aragorn, Legolas, Gimli, Frodo
}
var identifyRace: fellowRace = .Aragorn 
switch identifyRace {
case .Aragorn: print("Human")
case .Legolas: print("Elf")
case .Gimli: print("Dwarf")
case .Frodo: print("Hobbit")
}

Мы используем слово enum, за которым следует его родительский тип данных, чтобы объявить перечисление. Используя перечисление, Swift будет принимать только значения настройки внутри. Такая практика может сделать код более организованным и менее подверженным ошибкам, связанным с типами данных.

Хотя я не одобряю эту практику, перечисления также могут быть объявлены без родительского типа данных, подобного этому.

E.g.

enum fellowRace {
  case Aragorn, Legolas, Gimli, Frodo
}

Синтаксис также может быть отформатирован таким образом.

E.g.

enum fellowRace {
  case Aragorn
  case Legolas
  case Gimli
  case Frodo
}

Необработанные значения также можно поместить в перечисление для более глубокой настройки.

E.g.

enum fellowRace: String {
  case Aragorn = "Human"
  case Legolas = "Elf" 
  case Gimli = "Dwarf" 
  case Frodo = "Hobbit"
}
 
var identifyRace: fellowRace = .Aragorn 
print(identifyRace.rawValue)

В нашем следующем уроке мы узнаем, как оборачивать более сложные типы данных с помощью структур.

Да пребудет с вами код,

-Дуга