post-custom-banner

Optional이란, swift의 특수한 Type으로, 특정 값의 존재 유무에 따라 값이 없을 경우 nil로 표현된다. 바로 이 nil을 핸들링 하는 방법이 Optional binding이다!

Optional Binding에는 아래 방법이 있지만, if-letguard-let을 중심으로 작성하도록 하겠다.

IF-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의 사용 방법은 아래와 같다

guard let foo = real_foo else {
	// real_foo가 nil일 경우, 해당 부분에서 실행된다.
	return
}

GUARD-LET에서 중요한 것은, Optional Binding이 된 값의 Scope가 guard-let 구문 상단까지 한정된다.

IF-LET vs GUARD-LET 차이점 정리

if-let
1. 조건문의 Optional 값이 nil인지 확인하고 2분기로 작업할 수 있다.
2. 지역변수로만 사용 가능하다.

guard-let
1. 조건이 true 일 때 코드가 계속 실행된다.
2. 전역변수로 사용이 가능하다.
3. 조건이 false 일 때 else 문이 실행되며 상위 코드 블럭을 종료하는 함수가 반드시 필요하다. (continue, break return, throw 등)

profile
RTFM
post-custom-banner

0개의 댓글