iOS_Dev
[Swift] Assert와 Guard 사용법 정리
Toproot
2022. 9. 27. 21:21
728x90
728x90
학습내용
- 디버깅 중에 조건을 검증해주는 Assert
- if문과 유사하게 조건을 걸어주는 Guard
🔐 Assert와 Guard는 무엇인가
Swift의 특별한 기본함수라고 할 수 있는 Assert와 Guard는 이름만 들으면 낯설게 느껴집니다.
하지만 잘 사용 하면 개발자에게 정말 유용한 도구이고,
좀 더 다양해진 If문(?) 처럼 느껴지기도 합니다.
Assert
Assert는 특정 조건을 체크하고, 해당 조건이 성립되지 않으면 error 메세지를 띄워 줍니다.
디버깅 모드에서만 동작하며, 주로 디버깅 중 조건의 검증을 위해 사용합니다.
조건이 성립되지 않을 때, Terminal 에서 runtime error를 발생시키고,
작성했던 메세지를 나타내주어 어느 부분에서 에러가 났는 지 찾기 쉽게 도와줍니다.
value의 값을 검증하고, 성립되지 않으면 error 메세지 출력
import Foundation
// assert 는 디버깅 중 조건의 검증을 위해 사용
var value = 0
assert(value == 0)
value = 2
assert(value == 0, "값이 0이 아닙니다.") // Fail -> 메세지와 함께, runtime error
// __lldb_expr_1/16.Assert_Guard.xcplaygroundpage:9: Assertion failed: 값이 0이 아닙니다.
Guard
Guard는 어떤 함수 속에서 특정 조건을 검사하여 그 다음에 오는 코드의 실행여부를 결정해 줍니다.
if 문과 비슷하지만, 기본적으로 조건이 거짓일 때 else문이 작동하여 return을 반환합니다.
/*
guard 조건 else {
// 조건이 false 이면 else 구문이 실행되고
return or throw or break를 통해 이 후 코드를 실행하지 않도록 한다.
}
*/
func guardTest(value: Int) {
guard value == 0 else { return }
print("안녕하세요")
}
guardTest(value: 0)
// 안녕하세요
Optional Binding이 가능한 Guard문
- guard문을 활용해 Optional을 조건문 범위 밖에서도 사용할 수 있음.
func guardTest(value: Int?) { // Int? -> Optional Binding
guard let value = value else { return }
print(value)
}
guardTest(value: 2)
guardTest(value: nil)
728x90
728x90