하... 이제 옵셔널이다
옵셔널
- 사실 옵셔널에는 내용이 굉장히 적다.
- B.U.T. 어느 문법이던 중요하겠지만 Swift에서도 굉장히 중요한 표현이다
- 안드로이드 개발을 진행할 때는, 옵셔널이라는 명칭보다는 nullable이라는 단어를 사용했다.
- 스위프트의 특징인 안전성을 담보로 사용할 수 있는 기능이다
- 옵셔널과 옵셔널이 아닌 값은 철저히 다른 타입으로 인식하기 때문에, 컴파일 시점에서 오류를 걸러낸다.
그렇다면 왜 옵셔널을 사용하는가?
- 함수의 전달인자의 값이 잘못된 값일 때
- 매개변수를 굳이 넘기지 않아도 될 때
- 열거형을 불러올 때, case에 존재하지 않을 때
앞에서 enum에서 알아봤 듯이, 옵셔널은 열거형이다
옵셔널 추출
- 옵셔널 바인딩
- if 사용 - if블록 내에서만 사용 가능
- guard 사용 - 블록외의 블록에서 사용 가능
- 암시적 추출
- ! 사용 - 위험한 방법
struct Person{
var name: String?
}
var person: Person = Person(name: "tree")
//if 사용
if let name = person.name{
print(name) // tree
}
//guard 사용
guard let name = person.name else { ... }
print(name) // tree
//암시적 추출 사용(1)
let name = person.name!
print(name) // tree
var person2 = Person()
let name2 = person2.name! // 런타임 에러 발생
'Swift' 카테고리의 다른 글
[Swift] 프로퍼티/메서드 - 스위프트 언어 및 문법(6) - feat.야곰's Swift Programming (0) | 2021.01.14 |
---|---|
[Swift] 구조체/클래스 - 스위프트 언어 및 문법(5) - feat.야곰's Swift Programming (0) | 2021.01.14 |
[Swift] 함수/메서드 - 스위프트 언어 및 문법(3) - feat.야곰's Swift Programming (0) | 2021.01.14 |
[Swift] 데이터타입 - 스위프트 언어 및 문법(2) - feat.야곰's Swift Programming (0) | 2021.01.14 |
[Swift] 스위프트란? - 스위프트 언어 및 문법(1) - feat.야곰's Swift Programming (0) | 2021.01.14 |