반응형
Notice
Recent Posts
Recent Comments
Link
공부한 것 꼭꼭 씹어먹기
assert, guard 본문
반응형
assert
- 특정 조건을 체크하고, 조건이 성립되지 않으면 메세지를 출력하게 할 수 있는 함수
- assert함수는 디버깅 모드에서만 동작하고 주로 디버깅 중 조건의 검증을 위하여 사용
var value = 0
assert(value == 0) // 통과
value = 2
assert(value == 0, "값이 0이 아닙니다") // Assertion failed: 값이 0이 아닙니다 출력(에러도 발생)
guard문
- 뭔가를 검사하여 그 다음에 오는 코드를 실행할지 말지 결정하는 것
- guard문에 주어진 조건문이 거짓일때 구문이 실행됨
- 주로 잘못된 값이 함수에 들어오는 것을 방어함(early return)
func guardTest(value: Int) {
guard value == 0 else { return }
print("---")
}
guardTest(value: 2) // value가 0이 아니기 때문에 guard문에 막혀서(else로 빠짐) print가 실행 안된다
guardTest(value: 0) // print 실행됨
// guard문으로 옵셔널 바인딩
func guardTest(value: Int?) {
guard let zella = value else { return }
print(zella)
}
guardTest(value: 2) // 2가 출력됨.
// Optional(2)을 let value라는 변수에 대입할 수 있기 때문에 옵셔널 바인딩 됨(옵셔널 벗겨냄)
guardTest(value: nil) // 함수 실행 종료됨
// guard문으로 옵셔널 바인딩 하면 함수 내부 전역에서 해당 변수를 쓸 수 있다.
// (if로 하면 if 블럭에서만 그 변수가 유용함)
반응형
Comments