Latest web development tutorials

스위프트 열거

열거 단순히 데이터 형식이지만,이 데이터 수집의 공통 특징들의 집합 인 사용자 특정 데이터를 포함하는 유일한 데이터 형식이다.

목표 C 및 C, 열거 기능과 유사한 스위프트 열거 구조 :

  • 클래스, 클래스가 인스턴스화하여 그 값에 액세스 할 수 있습니다 선언된다.

  • 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 ) 열거 (또는 회원)의 회원입니다. case 키워드 멤버 값의 새로운 라인이 정의됩니다 나타냅니다.

참고 : C와 목표 - C와 스위프트가 작성되는 기본 정수 값이 부여되지 않습니다 다른 열거 형 멤버. 상기에서 DaysofaWeek 예, Sunday , Monday , …… 그리고 Saturday 암시 적으로 값을 할당하지 않습니다 0 , 1 , …… 그리고 6 . 대신, 이들 부재 자체는 이미 명확하게 정의 된 완전한 열거 값이 DaysofaWeek 유형입니다.

var weekDay = DaysofaWeek.THURSDAY 

weekDay 이 될 수있다 유형 DaysofaWeek 값이 초기화 될 수있다 때 추정. 일단 weekDay 로 선언 DaysofaWeek (.), 다른로 설정하기 위해 축약 구문을 사용할 수 있습니다 DaysofaWeek 값 :

var weekDay = .THURSDAY 

경우 weekDay 종류가 알려진 경우에는, 그 지정은 다시 열거 이름을 생략 할 수있다. 명시 적 형 열거 값을 사용하면 코드를 읽기 수 있습니다.

이것은 원래 값과 관련된 열거 값으로 분할 할 수있다.

상기 상관 값을 원래 값의 차이

상관 값 원래 값
데이터의 종류 동일한 데이터 형식
예 : 열거 {10,0.8, "안녕하세요"} 예 : 열거 {10,35,50}
상수 또는 변수에 따라 값을 만듭니다 값 미리 채워진
새 회원 기반 열거 상수를 만들거나 변수 상관 관계 값이 설정됩니다, 당신은 시간을 할 때마다, 그 값은 다를 수 있습니다. 원래 값은 항상 동일

상관 값

다음 예, 우리는 열거 형의 명명 된 학생을 정의, 그것은 관련된 값 이름 (INT, INT, INT, INT), 또는 마크 문자열 타입 (문자열) 상관 값이 될 수 있습니다.

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。

원래 값

원래의 값은 문자열, 문자 또는 임의의 정수 또는 부동 소수점 값이 될 수있다. 그 열거 선언의 각 원의 값은 고유해야합니다.

원래 값은 정수 열거 인 경우, 각 구성원에 대한 명시 적으로 할당하지 않고, 스위프트가 자동으로 할당합니다.

일본어와 같은 정수 값을 사용하는 경우 예를 들어, 할당 된 값 암시 순차적 하나씩 증가. 첫번째 값이 할당되지 않은 경우, 초기 값은 0으로 자동 설정된다.

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。