if let & guard let

E_H·2021년 3월 22일
0

Swift

목록 보기
3/11

이전 포스트에서 Optional에 대해 배웠다.
Optional의 값을 꺼내는 바인딩에서
if let 과 guard let 이 있는데
비슷한 듯한 둘은 무슨차이가 있을까?

var number: Int?

예시의 구문처럼 number는 optional타입의 Int이다.
number의 값을 꺼내기 위해 if let을 사용해보자

if let

if let numberValue = number {
        print(numberValue)
    }else {
        print("nil")
    }

if 조건문을 통해 number가 nil값이면 else문을 값이 있을 경우 true문을 통해 값을 가져오게 된다.
if문의 경우 Optional값이 있을 경우와 nil일 경우 둘 다 코드를 작성하여 대응할 수 있는 장점이 있으나 number의 값이 있다고 가정했을 때

numberValue는 if문 내부에서만 쓸 수 있다.

그렇다면 guard let은 어떨까

guard let

guard let numberValue = number else { return }
print(numberValue)

guard문의 경우 else가 필수적이며 else 코드블럭 내부에서 return, break, continue, throw 제어문 전환명령을 사용할 수 있다.

number의 값이 있을 경우 다음 줄로 넘어간다.
그렇기 때문에 함수 내에서는 numberValue를 지역상수처럼 활용할 수 있다.

guard문 사용시 코드가 깔끔해져 가독성이 좋아지고
if let문 사용시엔 값이 있을 경우와 아닐경우 둘다 대응하기 편하다는 장점이 있다.

0개의 댓글