Optional
이란, swift의 특수한 Type으로, 특정 값의 존재 유무에 따라 값이 없을 경우 nil
로 표현된다. 바로 이 nil
을 핸들링 하는 방법이 Optional binding
이다!
Optional Binding
에는 아래 방법이 있지만, if-let
과 guard-let
을 중심으로 작성하도록 하겠다.
if-let
의 사용 방법은 아래와 같다.
var foo : String? = ...
var fo : String? = ..
//(1) 한 개의 변수만 사용할 때
if let foo = real_foo {
// 임수 변수(foo)에 실제 변수(real_foo)가 할당된다.
// 해당 섹션은 real_foo가 nil이 아닐 때 실행된다
} else {
// 해당 섹션은 real_foo가 nil일 때 실행된다.
}
//(2) 한 개 이상의 변수를 사용할 때
if let foo = real_foo, let fo = rea_fo {
// code
}
//(3) 축약하기
if let foo, fo {
// 이떄 해당 섹션에서 foo와 fo는 if-let 구문에 한정되어 사용되므로, 상단의 variable과 다른 값이다.
}
IF-LET
에서 중요한 것은, Optional Binding이 된 값의 Scope는 if-let 구문으로 한정된다는 것이다. 그렇기 때문에, Optional Binding이 된 값을 구문밖에서 사용할 수 없다.
guard-let
의 사용 방법은 아래와 같다
guard let foo = real_foo else {
// real_foo가 nil일 경우, 해당 부분에서 실행된다.
return
}
GUARD-LET
에서 중요한 것은, Optional Binding이 된 값의 Scope가 guard-let 구문 상단까지 한정된다.
if-let
1. 조건문의 Optional 값이 nil인지 확인하고 2분기로 작업할 수 있다.
2. 지역변수로만 사용 가능하다.
guard-let
1. 조건이 true 일 때 코드가 계속 실행된다.
2. 전역변수로 사용이 가능하다.
3. 조건이 false 일 때 else 문이 실행되며 상위 코드 블럭을 종료하는 함수가 반드시 필요하다. (continue, break return, throw 등)