Swift перечисление
Перечисление просто тип данных, но это единственный тип данных, который содержит пользовательские конкретные данные, который представляет собой набор общих характеристик сбора данных.
Swift структура перечисления похожа на Objective C и C, перечисление функций:
Он объявлен в классе, класс может получить доступ к его значение на инстанцировании.
Enum можно также определить конструктор (инициализаторы), чтобы обеспечить начальное значение члена, может расширить их функциональные возможности в оригинальной основе реализации.
Вы можете наблюдать протокол (протоколы), чтобы обеспечить стандартную функцию.
грамматика
Swift перечисление ключевых слов используется для создания и перечислить их все определения, помещается в пару скобок:
enum enumname { // 枚举定义放在这里 }
Например, мы определяем следующий день недели перечисления:
import Cocoa // 定义枚举 enum DaysofaWeek { case Sunday case Monday case TUESDAY case WEDNESDAY case THURSDAY case FRIDAY case Saturday } var weekDay = DaysofaWeek.THURSDAY weekDay = .THURSDAY switch weekDay { case .Sunday: print("星期天") case .Monday: print("星期一") case .TUESDAY: print("星期二") case .WEDNESDAY: print("星期三") case .THURSDAY: print("星期四") case .FRIDAY: print("星期五") case .Saturday: print("星期六") }
Выход выше выполнение программы:
星期四
Значение (как определено в перечислении Sunday
, Monday
, ……
и Saturday
) являются членами значений перечисления (или элемента). case
Ключевые слова члены представляют будет определяться новая линия значения.
Примечание: C и Objective-C и другого члена перечисления Swift не будет дано целое значение по умолчанию создается. В приведенном выше
DaysofaWeek
например,Sunday
,Monday
,……
иSaturday
не будет неявно присваивается значение0
,1
,……
и6
. Вместо этого сами эти члены имеют полное значения перечисления, которые уже четко определеныDaysofaWeek
типа.
var weekDay = DaysofaWeek.THURSDAY
weekDay
типа может быть DaysofaWeek
вывод , когда значение может быть инициализирована. После weekDay
объявлен как DaysofaWeek
, вы можете использовать сокращенный синтаксис , чтобы установить его на другой (.) DaysofaWeek
значение:
var weekDay = .THURSDAY
Когда weekDay
, когда тип известен, его назначение может быть опущено снова перечисления имя. Используйте явные значения типа перечисления делает код более удобным для чтения.
Его можно разделить на значение перечисления, связанные с первоначальным значением.
Разница между значением корреляции и исходное значение
Значение корреляции | первоначальная стоимость |
---|---|
Различные типы данных | Тот же тип данных |
Примеры: {перечислимый 10,0.8, "Hello"} | Примеры: {перечислимый 10,35,50} |
Создайте значение, основанное на постоянной или переменной | Значение предварительно населенная |
Корреляция значение при создании нового членства на основе константы перечисления или переменная будет установлена, и каждый раз, когда у вас есть время, то его значение может отличаться. | Исходное значение всегда одинакова |
Значение корреляции
В следующем примере мы определяем с именем Student перечислимого типа, это может быть связано значение Имя (Int, Int, Int, Int), или Отметьте тип строки (String) значение корреляции.
import Cocoa enum Student{ case Name(String) case Mark(Int,Int,Int) } var studDetails = Student.Name("w3big") var studMarks = Student.Mark(98,97,95) switch studMarks { case .Name(let studName): print("学生的名字是: \(studName)。") case .Mark(let Mark1, let Mark2, let Mark3): print("学生的成绩是: \(Mark1),\(Mark2),\(Mark3)。") }
Выход выше выполнение программы:
学生的成绩是: 98,97,95。
первоначальная стоимость
Исходное значение может быть строка, символ или любое целое число или число с плавающей точкой. Каждое исходное значение в перечислимом декларации должно быть уникальным.
Когда исходное значение представляет собой целое перечисление, без явного присваивания для каждого члена, Swift автоматически назначит вам.
Например, при использовании целое значение в качестве оригинала, неявное значение, присвоенное последовательно увеличивается на единицу. Если первое значение не присваивается начальное значение будет автоматически устанавливается равным нулю.import Cocoa enum Month: Int { case January = 1, February, March, April, May, June, July, August, September, October, November, December } let yearMonth = Month.May.rawValue print("数字月份为: \(yearMonth)。")
Выход выше выполнение программы:
数字月份为: 5。