Latest web development tutorials

Swift wyliczenie

Wyliczenie to po prostu typ danych, ale jest to jedyny typ danych, który zawiera niestandardowy określonych danych, która jest zbiorem wspólnych cech gromadzenia danych.

Swift struktura podobna do wyliczenia Objective C i C, funkcje liczby:

  • Jest ona zadeklarowana w klasie, klasa może uzyskać dostęp do jego wartość o uruchamianiu.

  • Enum można również zdefiniować konstruktor (inicjalizatory), aby zapewnić wartość początkową członkowskim; może rozszerzyć ich funkcjonalność w pierwotnym podstawie realizacji.

  • Można zaobserwować protokołu (protokoły), aby zapewnić standardową funkcję.

gramatyka

Swift kluczowe enum jest używany do tworzenia i wymienić całe ich definicje umieszczone w parę szelek:

enum enumname {
   // 枚举定义放在这里
}

Na przykład, możemy zdefiniować następny dzień tygodnia wyliczenie:

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("星期六")
}

Wyjście powyżej wykonywanie programu jest:

星期四

Wartość (zgodnie z definicją zawartą w wyliczenie Sunday , Monday , …… i Saturday ) są członkami wartości wyliczenia (lub państw). case kluczowe członkowie reprezentują nową linię wartości zostaną określone.

Uwaga: C i Objective-C i inna członkiem wyliczenie Swift nie otrzyma domyślną wartość całkowita jest tworzony. W powyższym DaysofaWeek przykład, Sunday , Monday , …… i Saturday nie będzie domyślnie przypisywana jest wartość 0 , 1 , …… i 6 . Zamiast tego same te elementy mają pełne wartości wyliczenia, które są już jasno określone DaysofaWeek typu.

var weekDay = DaysofaWeek.THURSDAY 

weekDay typ może być DaysofaWeek wywnioskować, gdy wartość ta może zostać zainicjowany. Po weekDay jest zadeklarowana jako DaysofaWeek można używać skróconej składni, aby ustawić go na inny (.) DaysofaWeek wartości:

var weekDay = .THURSDAY 

Gdy weekDay , gdy typ jest znany, jego przypisanie może zostać pominięty znów wyliczenia nazwę. Użyj jawne wartości typu wyliczenia sprawia, że ​​kod jest bardziej czytelny.

Można je podzielić na wyliczenie wartości związanej z pierwotnej wartości.

Różnica między wartością korelacji i wartości początkowej

Wartość korelacji wartość Original
Różne rodzaje danych Ten sam typ danych
Przykłady: enum {10,0.8, "Hello"} Przykłady: enum {10,35,50}
Tworzenie wartości w oparciu o stałą lub zmienną Wartość wstępnie wypełnione
wartość korelacji podczas tworzenia nowego wyliczenia stałej na zasadach członkostwa lub zmiennej zostanie ustawiona, a za każdym razem, kiedy mamy czasu, jego wartość może być inna. Wartość początkowa jest zawsze taka sama

Wartość korelacji

Poniższy przykład, możemy zdefiniować nazwie Student typu wyliczeniowego, może to być związane Wartość Nazwa (Int, Int, Int, Int) lub Mark typu string (String) wartość korelacji.

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

Wyjście powyżej wykonywanie programu jest:

学生的成绩是: 98,97,95。

wartość Original

Oryginalny wartość może być ciągiem znaków lub dowolną liczbą całkowitą lub wartość zmiennoprzecinkową. Każda oryginalna wartość w deklaracji enum musi być unikatowa.

Gdy wartość początkowa stanowi wyliczenie całkowitą, bez wyraźnego przypisania dla każdego członka, Swift automatycznie przypisze ci.

Na przykład, podczas korzystania wartość całkowitą jako oryginalna wartość niejawny przypisane kolejno zwiększana o jeden. Jeśli pierwsza wartość nie jest przypisana wartość początkowa zostanie automatycznie ustawiony na zero.

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

Wyjście powyżej wykonywanie programu jest:

数字月份为: 5。