본문 바로가기

교육/Swift

[swift] enum

1. enumerator

연속하는 자료를 가지는 상수 집합


2. 샘플코드

// enum

// 기본모양

//enum {Mon,Tue} // c스타일


// 이름 써야하고 항목 case

//enum Days {

//    case Mon

//    case Tue

//}


// case쓰기 귀찮으면 , 이어가자

enum Days {

    case Mon,Tue, Wed, Thu, Fri, Sat, Sun

}


// 정수형 상수가 아닌, 하나의 독립된 타입으로 인식

var day = Days.Mon


showType(day)


//day = 1 // 에러

day = Days.Mon //enum 하나를 넣어야함

day = .Mon // 이렇게 넣어도 된다.


// 값을 가지는 enum

enum Shape : Int { case Rect = 0, Circle, Triangle}

enum Shape2 : String { case Rect = "R", Circle, Triangle} // 아무것도 안주면 문자열을 rawValue 가짐

enum Shape3 : Double { case Rect = 0.0, Circle = 1.1, Triangle = 2.2} // double 추론할 없기 줘야함


var sh = Shape2.Circle

print(sh, sh.rawValue) // rawValue 보이게 하려면 값을 줘야함,

if sh == Shape2.Circle{} // 가능


// associated value

enum Token { case Name(String, Int), Age(String, Int)}  // 객체당 하나씩 가질수있음, 구조체처럼


var t1 = Token.Name("AA",10)

var t2 = Token.Name("BB", 20)


// 문제점 : Associated value 가지는  == 안됌

//if t1 == Token.Name("AA", 10){}


switch t1

{

case .Name("AA", let x ) : print(x)

case .Name(let name, let x ) : print(name,x)

case .Age(let age, let x) : print(age,x)

}


// 생성자도 가능하고 멤버 함수도 가능

enum Color

{

    case BLACK, RED, WHITE

    init(){self = RED}

    func toString() -> String {return "RED"}

}

var c1 = Color.WHITE

var c2 = Color()

print (c1,c2)

print(c2.toString())

'교육 > Swift' 카테고리의 다른 글

[swift] init  (0) 2016.08.05
[swift] 구조체와 클래스  (0) 2016.08.05
[swift] 클로저  (0) 2016.08.04
[swift] 함수 고급  (0) 2016.08.04
[swift] 제어문  (0) 2016.08.04