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 |