본문 바로가기
⌨️ Language/swift

[Swift] assert와 guard

by hyebin (Helia) 2023. 2. 6.

assert

  • 특정 조건을 체크하고, 조건이 성립되지 않으면 메시지를 출력하게 할 수 있는 함수
  • assert 함수는 디버깅 모드에서만 동작하고 주로 디버깅 중 조건의 검증을 위하여 사용
var value = 0
assert(value == 0)

value = 2
assert(value == 0, "값이 0이 아닙니다.")
  • 첫 번째 assert는 참이기 때문에 오류가 발생하지 않음
  • 두 번째 assert는 거짓이기 때문에 런타임에러가 발생
    • Assertion failed: 값이 0이 아닙니다.

 

guard 문

  • 조건을 검사하여 그다음에 오는 코드를 실행할지 말지 결정하는 구문
  • guard을 사용하여 조건이 성립하지 않을 시 특정 실행 구문을 빠르게 종료
  • guard의 else 블록 내부에는 특정 코드 블록을 종료하는 지시어(return, break 등)가 꼭 있어야 함
  • 타입 캐스팅, 옵셔널과 자주 사용
func guardTest(_ value: Int){
    guard value == 0 else {return}
    print("안녕하세요")
}

guardTest(1)
guardTest(0)    //안녕하세요

 

"if let" vs "guard let"

  • if let은 옵셔널 바인딩 된 상수가 if let 구문 안에서만 사용 가능
  • guard let 구문은 옵셔널 바인딩 된 상수를 함수 내부의 지역 상수처럼 사용 가능
  • if let 구문은 else가 필요 없지만, guard let 구문은 else 구문이 무조건 따라와야 함
반응형

'⌨️ Language > swift' 카테고리의 다른 글

[Swift] 익스텐션 (Extensions)  (0) 2023.02.06
[Swift] 프로토콜 (Protocol)  (0) 2023.02.06
[Swift] 타입 캐스팅  (0) 2023.02.06
[Swift] 클래스(Class)와 구조체(Struct)  (0) 2023.02.06
[Swift] 옵셔널 (Optional)  (0) 2023.02.06

댓글