공부한 것 꼭꼭 씹어먹기

assert, guard 본문

카테고리 없음

assert, guard

젤라솜 2021. 10. 29. 20:50
반응형

 

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