Swift - 옵셔널(Optional)이란?
Swift - 옵셔널(Optional)이란?
옵셔널(Optional)이란?
nil을 담을 수 있는 타입nil: 아무런 값도 없다는 의미로 사용됨.
- 값이 있을수도 있고 없을 수도 있음.
선언 방식 및 초기화 방식
1
var ex: dataType? = value
예시
1
2
var ex: String? = "Hello World!"
print(ex)
결과
1
Optional("Hello World!")
위 예시에서 확인할 수 있듯이 Optional이라는 객체에 값이 감싸져있음.
이것을 옵셔널 래핑이라고 함.
일반적으로 옵셔널 변수는 연산이나 결합을 사용할 수 없음.
이런 기능들을 사용하기 위해선 Optional 객체를 벗겨야하는데, 이것을 옵셔널 언래핑이라고 함.
언래핑을 위한 방법은 아래와 같이 여러가지가 존재함.
강제 언래핑
- 옵셔널 객체를 강제로 언래핑 시키는 방법
- 만약
nil일 경우 오류가 발생함.
예시
1
2
var ex: String? = "Hello World!"
print(ex!)
결과
1
Hello World!
옵셔널 바인딩
- 조건식을 통해서 옵셔널 변수를 일반 변수에 바인딩시켜 안전하게 처리 가능함.
- 만약 값이
nil일 경우false로 처리되어else블록이 실행됨.
if문 예시
1
2
3
4
5
6
7
var ex: String? = "Hello World!"
if let value = ex{
print(value)
}else{
print("값이 없음")
}
결과
1
Hello World!
if문을 통해 바인딩할 경우 if문 내에서만 사용이 가능함.
guard문 예시
1
2
3
4
5
6
7
8
9
10
func ex(str: String?){
guard let value = str else{
print("값이 없음")
return
}
print("value : \(value)")
}
ex(str: "Hello World")
결과
1
value : Hello World
guard문을 통해 바인딩을 처리할 경우if문과는 달리guard문을 통과한 시점부터 함수가 종료되기 전까지 사용이 가능함
기본값 제공
- 만약 옵셔널 변수가
nil일 경우 기본값으로 제공해줄 값을 지정하여 안전하게 언래핑시킬 수 있음.
예시
1
2
var ex: String? = nil
print(ex ?? "Hello World")
결과
1
Hello World
자동 언래핑
- 비교 연산자를 사용할 때 컴파일러에 의해 자동으로 옵셔널이 언래핑됨.
- 만약 값이
nil일 경우false를 반환함.
- 만약 값이
예시
1
2
3
4
5
6
7
var ex: Int? = nil
if ex == 10{
print("10임")
}else{
print("값 없음")
}
결과
1
값 없음
암시적 언래핑
- 옵셔널 타입이지만, 사용할 떈 옵셔널이 아닌 일반 변수처럼 사용할 수 있도록 옵셔널 변수를 선언할 수 있음.
- 결합이나 연산을 할 때 자동으로 언래핑됨.
예시
1
2
3
4
5
6
var ex: String! = "Hello World"
var ex2: String = ex
print(ex2)
var ex3: Int! = Int("10")
print(ex3 + 10)
결과
1
2
Hello World
20
This post is licensed under CC BY 4.0 by the author.