Swift 옵셔널 & 옵셔널 바인딩
Swift 옵셔널 & 옵셔널 바인딩에 대해서 알아보자.

Swift 옵셔널(Optional) & 옵셔널 바인딩(Optional Binding)
옵셔널(Optional)
값이 있을 수도 있고 없을 수도 있을 때 사용하는 타입이다.
var stringNum = "111"
var convertedNum = Int(stringNum)
print(convertedNum) // Optional(111)
// 옵셔널 타입 확인
print(type(of: convertedNum)) // Optional<Int>
변수와 상수의 초기값 생략의 차이
변수에 초기값을 생략하면 자동으로 nil 할당된다.
// 상수의 Optional 타입
let constantNum: Int?
constantNum = 10 // 상수는 한 번만 값을 할당할 수 있다.
// 변수의 Optional 타입
var optionalNum: Int? // 변수 선언시 옵셔널 타입에 초기값을 생략하면 자동으로 nil 할당
print(optionalNum) // nil
옵셔널 바인딩(Optional Binding)
옵셔널 바인딩을 사용해서 안전하게 옵셔널을 해제할 수 있다.
let num1: Int? = 123
if let num1 = num1 {
print(num1) // 123
} else {
print("No value")
}
강제 언래핑
"!" 연산자를 사용해서 옵셔널을 강제로 언래핑할 수 있다.
let optionalNum: Int?
optionalNum = 3
if optionalNum != nil {
print(optionalNum!) // 3
} else {
print("No value")
}
옵셔널 바인딩 예제 1
옵셔널 바인딩에서 선언된 변수와 옵셔널 바인딩 외부에서 선언된 변수의 이름이 같으면 생략 가능하다.
let optionalTest: Int? = 123
if let optionalTest {
print(optionalTest) // 123
} else {
print("No value")
}
옵셔널 바인딩 예제 2
옵셔널 바인딩에서 선언된 변수는 if 구문 내에서만 사용 가능하다.
let optionalTest: Int? = 123 // 1.
if let optionalTest = optionalTest { // 2. 바인딩된 옵셔널은 if 구문 내에서만 사용 가능
print(optionalTest) // 123
} else {
print("No value")
}
print(optionalTest) // nil // 1번 값이 프린트 된다.
옵셔널 바인딩 예제 3
여러 옵셔널 바인딩이 있는 경우, "," 연산자를 사용해서 여러 옵셔널 바인딩을 한 번에 할 수 있다. 모든 바인딩 조건이 설립할때 실행한다.
if let first = Int("1"), let second = Int("2"), first > second { // 모든 바인딩 조건이 설립할때 실행한다.
print("first is greater than second")
}