본문 바로가기
language/Swift

Swift 스위프트 - unwrapping if var, if let , guard 까지

by JongDroid 2022. 1. 14.

옵셔널을 unwrap 하는 방법은 정말 여러가지가 있다. 

오늘은 if문과 guard 를 이용하는 방법을 살펴보자. 근데 은근 난이도가 있는 편이다.

 

1. if var / if let 을 통한 unwrapping

-if 문은 조건이 거짓인지 참인지 판별하고 그에 따라 수행하는 역할을 한다.

-해당 부분을 이용하여 unwrapping 까지 한다.

사진을 자세히 보면 상단 if문은 num1, num2 값을 비교하였고, 최종 결과인 false 로 인하여 조건문 바깥을 실행한다. 

(참일때는 조건문 내부를 실행) 

하단 if문은 if let 을 통하여 다이렉트 unwrapping 을 진행하였다. myNum1의 값이 존재하기 때문에 checkNum에 해당 값을 담았다.

 

오른쪽 출력결과를 보면 상단 if문과 하단 if문의 출력결과도 다르다. 옵셔널 형태로 결과가 출력된 것과, 인트형으로 출력된 것은 다르다.

 

!!! 자 이제 집중 !!!

 

2.guard else 를 이용한 unwrapping

unwrapping 자체가 챙소한 개념이고, 해당 문법은 아예 처음나오는 문법이라 누구에게나 어렵게 느껴질 수 있다.

우선 guard 도 조건문이랑 같은 개념이라고 생각하면 쉽다. 

 

if condition1 { 
// block1

→ 
guard condition1 else { // block2 }
// block1

 

if문과 guard 의 차이다. 

if문은 조건이 참일때 블록 내부를 실행하지만, guard 는 조건이 참일때 블록 밖을 실행한다. 따라서 대게 펑션이나 클래스와 함께 사용한다.

 

함수 내부에 작성된 guard 구문을 보면 

checkLet 이라는 상수에 myNum1 값을 저장합니다. myNum1이 값이 존재합니다. 따라서 값은 참이 됩니다.

따라서 guard 바깥 부분인 print 함수 두 줄을 실행합니다.

*만약 myNum1 값이 없다면 return 을 타고 괄호를 빠져나갈 것 입니다.

 

 

댓글