안녕하세요~ 차니에요!
오늘은 if let과 guard let의 특징과 사용법 그리고 차이점에 대해 알아보겠습니다!
1. Snippets
Xcode Snippets을 활용해보도록 하겠습니다.
Xcode 내에서 기본적으로 만들어져 있는 항목들도 있고 커스텀 키워드의 자동완성 또한 만들 수 있으니 활용해보시면 좋을 것 같아요.
2. if let
2-1. if let 정의
if let은 Optional 값을 Unwrapping 하는 과정입니다.
옵셔널에 대한 내용은 다음에 시간내서 다루어보도록 하겠습니다!
간단하게 말하면 if문 안의 조건문의 값이 nil인가 아닌가를 체크하는 문법입니다.
조건문이 nill이 아니라면 해당 블럭이 실행되는 구조입니다.
아래 예제를 통해 사용법을 보도록 하겠습니다.
2-2. if let 예제
if let str = data {
print("data :: \(str)")
} else {
print("data is nil")
}
위와 같은 if let 코드가 작성되었다고 가정해보겠습니다.
if let은 nil이 아닐 때 실행되는 문법이라고 했었죠? if문이기 때문에 else 또한 작성이 가능합니다.
let data: String? = nil
let data: String? = "차니👋🏻"
3. guard let
3-1. guard let 정의
guard 안의 조건문이 참(true)이 아니면 else문이 실행되는 문법입니다.
예제를 통해 알아보도록 하겠습니다.
3-2. guard let 예제
func guardExample(_ testBool: Bool?) {
guard let bool = testBool, bool else {
print("참이 아니다.")
return
}
print("result bool :: \(bool)")
}
코드를 보면 guard문 안에 조건이 2가지 있습니다.
첫 번째로 guard let bool 변수에 testBool 변수를 담아주었고 두 번째로 bool 입니다.
아래와 같이 각각 다른 조건을 통해 호출하여 결과를 보도록하겠습니다.
guardExample(true)
guardExample(false)
예제에서 보이듯 if let과 달리 guard let으로 선언한 변수는 guard문 밖에서도 사용이 가능합니다.
4. if let, guard let 차이점
if let
1. 조건문의 Optional 값이 nil인지 확인하고 2분기로 작업할 수 있다.
2. 지역변수로만 사용 가능하다.
guard let
1. 조건이 true 일 때 코드가 계속 실행된다.
2. 전역변수로 사용이 가능하다.
3. 조건이 false 일 때 else 문이 실행되며 상위 코드 블럭을 종료하는 함수가 반드시 필요하다. (continue, break return, throw 등)
이러한 차이가 있기 때문에 상황에 맞게 사용하는 것이 바람직합니다~!
다음 포스팅에서는 두 문법을 활용한 응용편으로 찾아뵙겠습니다.