본문 바로가기

Swift

[Swift] guard, let 둘의 차이점은?

Optional 값을 Unwrapping 할 때 쓰이는 'guard'와 'let'. 이 둘의 차이점은 무엇일까?

 


 

> if 구문은 "~면 ~해라!" 
guard 구문은 "~아니면 끝내라!" 

라는 어구와, 코드의 가독성의 장점. `guard`는 `else`를 사용하여 예외처리를 한다! 이렇게만 알고있는 것 같아 좀 더 디테일하게 공부해봤다.

```swift
guard (Bool 타입 값) else {
    (예외사항 실행문)
    (제어문 전환 명령어)
}
```

 위의 코드를 보면, `guard`는 `if`와 같이 Bool 타입의 값을 조건으로 받되, 해당 조건 뒤에 바로 `else`가 붙는다는 점을 확인할 수 있다.
`guard`구문에서는 `if`구문과 달리 예외 처리를 위해 `else` 구문을 따로 추가하여 예외를 다루는 걸 확인할 수 있다!

 조건이 false면 `else`에 해당하는 코드가 실행되며, 그 코드에는 반드시 해당 코드 블록을 종료하는 제어문 전환 명령어(return, break, continue, throw)가 포함되어있어야 한다.

--> 여기서 코드 블록을 종료하는 코드가 필수라는 의미는, guard의 한계를 보여주는 부분이라고 생각한다! **왜냐면** 함수나 메서드 혹은 반복문 안에 사용하는 것이 아니라면, 제어문 전환 명령어를 사용할 수 없기 때문에 guard 명령어 또한 사용할 수 없게 되는 걸 배웠다.