스위프트 열거형


간단히 말하면 열거형도 데이터 유형이지만 이 데이터 유형은 공통된 특성을 가진 데이터의 집합입니다.

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 키워드는 행의 새 멤버 값이 정의됨을 나타냅니다. SundayMonday……Saturday)是这个枚举的成员值(或成员)。case关键词表示一行新的成员值将被定义。

注意: 和 C 和 Objective-C 不同,Swift 的枚举成员在被创建时不会被赋予一个默认的整型值。在上面的DaysofaWeek例子中,SundayMonday……Saturday不会隐式地赋值为01……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의 가능한 값 중 하나로 초기화될 때 유추될 수 있습니다. weekDayDaysofaWeek로 선언되면 단축 구문(.)을 사용하여 이를 다른 DaysofaWeek의 값으로 설정할 수 있습니다.

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

weekDay의 유형을 알면 다시 값을 할당할 때 열거명을 생략할 수 있습니다. 명시적으로 입력된 열거형 값을 사용하면 코드를 더 쉽게 읽을 수 있습니다. 열거는 관련 값과 원시 값으로 나눌 수 있습니다. 상관값원래 값데이터 유형이 다름같은 데이터 유형예: enum {10,0.8,"Hello"} 예: 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가 자동으로 값을 할당합니다.


예를 들어 정수를 기본 값으로 사용하는 경우 암시적 할당 값이 순차적으로 1씩 증가합니다. 첫 번째 값에 초기값이 할당되지 않으면 자동으로 0으로 설정됩니다.


rrreee

위 프로그램 실행의 출력 결과는 다음과 같습니다.

rrreee