스위프트 열거형
간단히 말하면 열거형도 데이터 유형이지만 이 데이터 유형은 공통된 특성을 가진 데이터의 집합입니다.
Swift의 열거형은 Objective C 및 C의 구조와 유사합니다. 열거형의 기능은 다음과 같습니다.
클래스에 선언되어 있으며 해당 값은 클래스를 인스턴스화하여 액세스할 수 있습니다.
열거는 생성자(초기화자)를 정의하여 초기 멤버 값을 제공할 수도 있으며 원래 구현을 기반으로 해당 기능을 확장할 수 있습니다.
표준 기능을 제공하기 위해 프로토콜을 준수할 수 있습니다.
Syntax
열거를 생성하고 전체 정의를 한 쌍의 중괄호 안에 넣으려면 Swift에서 enum 키워드를 사용하세요:
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
)는 이 열거형의 member 값(또는 member)입니다. case
키워드는 행의 새 멤버 값이 정의됨을 나타냅니다. 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
참고: C 및 Objective-C와 달리 Swift 열거형 멤버는 생성될 때 기본 정수 값이 할당되지 않습니다. 위의DaysofaWeek
예에서일요일
,월요일
,...
및토요일
0
,1
,...
및6
값은 암시적으로 할당되지 않습니다. 대신 이러한 열거형 멤버는 그 자체로 완전한 값을 가지며 이러한 값은 잘 정의된DaysofaWeek
유형입니다.
import Cocoa enum Student{ case Name(String) case Mark(Int,Int,Int) } var studDetails = Student.Name("php") 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)。") }
weekDay
유형은 DaysofaWeek
의 가능한 값 중 하나로 초기화될 때 유추될 수 있습니다. weekDay
가 DaysofaWeek
로 선언되면 단축 구문(.)을 사용하여 이를 다른 DaysofaWeek
의 값으로 설정할 수 있습니다. 学生的成绩是: 98,97,95。
weekDay
의 유형을 알면 다시 값을 할당할 때 열거명을 생략할 수 있습니다. 명시적으로 입력된 열거형 값을 사용하면 코드를 더 쉽게 읽을 수 있습니다. 상관값과 원래 값의 차이 | |
---|---|
원래 값 | |
같은 데이터 유형 | |
예: enum {10,35,50} | |
미리 채워진 값 |
관련 값
다음 예에서는 Name(Int, Int, Int, Int)의 관련 값 또는 Mark 값의 문자열 유형(String)일 수 있는 Student라는 열거 유형을 정의합니다.
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。
원래 값
원래 값은 문자열, 문자 또는 정수나 부동 소수점 값일 수 있습니다. 각 기본 값은 열거형 선언 내에서 고유해야 합니다.
원래 값이 정수 열거형인 경우 각 멤버에 명시적으로 값을 할당할 필요가 없으며 Swift가 자동으로 값을 할당합니다.
위 프로그램 실행의 출력 결과는 다음과 같습니다.
rrreee