제-천대성
2014. 12. 30. 10:33
2014. 12. 30. 10:33
- Optionals
- Swift에서 "값이 없음"을 처리하는 새로운 개념
- nil 값을 가질 수 있는 참조 형식과 값 형식을 옵셔널 형식(Optional Type)이라고 한다.
- 기본적으로 nil로 초기화 되고, 언제든지 필요한 값을 할당하거나 nil을 재할당 할 수 있음
- 반대로 nil값을 가질 수 없는 나머지 형식들은 비옵셔널 형식(Non-Optional Type)이라고 한다.
- 예)
- var optionalNum: Int? = nil
- var optionalStr:String? = "hello"
- 옵셔널 형식의 값을 사용할 때는 변수명 뒤에 느낌표를 붙여 강제 추출(Forced Unwrapping)연산사를 사용할 수 있다
- 예)
- var userName: String? = getName();
- if userName != nil { println("\(userName!)") }
- 옵셔널 형식이 항상 유효한 값을 가지는 경우에는 자료형 뒤에 물음표(?) 대신 느낌표(!)를 붙여서 암시적으로 추출되는 옵셔널 형식(Implicitly Unwrapped Optionals)으로 선언할 수 있다.
- 값이 nil인 경우 런타임 오류가 발생
- 예)
- var userName: String!= "kim"
- 옵셔널 바인딩(Optional Binding)은 nil테스트와 값 추출을 한번의 동작으로 처리해주는 패턴으로 if let 문법을 사용
- 예)
- if let userName = getName() { ... }
- if 문 내에서 값의 조작이 필요할 경우 if var로 선언 가능
- Nil Coalescing 연산자는 옵셔널 형식에 저장된 값을 추출하거나, 옵셔널 형식이 nil인 경우 사용할 기본값을 지정 한다.
- 이항 연산자로 a ?? b 와 같은 형태로 사용
- 왼쪽 피연자에는 옵셔널 형식의 데이터 또는 표현식
- 오른쪽에는 피연산자가 nil일 경우 리턴할 기본값 또는 표현식 (함수호출이나 연산자가 될 수도 있다)
- 예)
- var userName = getName() ?? "Jun"
- Optional Chaining 정리 중..