Swift 문법을 배울 때 새롭게 만난 아이가 guard 문이었다.
옵셔널 변수를 언래핑할 때(옵셔널 바인딩) 많이 쓰는 것 같은데, 낯설어서 그른가 if let
만 쓰게되고 그랬다..
그치만 또 예제 코드들을 찾다보면 자주 만나기도하고 언제까지 낯가릴 수는 없으니까 좀 더 자세히 알아보면서 우리 이제 그만 친해지길 바래,,
guard
- 조건을 검사하여 이 후 코드를 실행 유무를 판단하는 구문
- 조건이 false 일 때 구문이 실행!
- if랑은 반대!
- 기본 개념 예제 코드
func guardTest(value: Int) {
guard value == 0 else { return }
print("test")
}
guardTest(2) // 결과 없음
guardTest(0) // "test"
- guard를 옵셔널 바인딩에서 활용하기
func guardTest(value: Int?) {
guard let resultValue = value else { return }
print(resultValue)
}
guardTest(resultValue: 2) // "2"
guardTest(resultValue: nil) // 결과 없음
// 똑같은 코드를 if문으로 사용한다면
func ifTest(value: Int?) {
if let resultValue = value {
print(resultValue)
}
}
ifTest(value: 2)
ifTest(resultValue: nil) // 결과 없음
옵셔널 바인딩에서 guard와 if의 가장 큰 차이점이라고 한다면 if문은 if구문 내에서만 변수를 이용할 수 있는데, guard는 구문 밖에서도 이용이 가능하다.
func ifTest(value: Int?) {
if let resultValue = value {
print(resultValue)
}
print(resultValue) // error!!
}
매번 옵셔널 바인딩 한 값을 구문 밖에서 사용하려면 불가능해서 다른 전역변수를 할당했는데 이제 그럴 필요가 없다! 그동안 만들어 놓은 비효율적인 코드를 고치러 가야될듯..
끝!