Swift assert 와 guard(2020.10.31)

K S Michael·2020년 11월 1일

swift TIL

목록 보기
17/29

애플리케이션이 동작하는 도중에 생성하는 다양한 결과값을
동적으로 확인하고 안전하게 처리할 수 있도록
확인하고 빠르게 처리할 수 있다

Assertion

  • assert(::file:line:)함수를 사용한다
  • assert 함수는 디버깅 모드에서만 동작한다
  • 배포하는 어플리케이션에서는 제외된다
  • 주로 디버깅 중 조건의 검증을 위해 사용한다

var someInt : Int = 0

assert(someInt == 0 ,"someInt != 0")

someInt = 1

// assert(someInt == 0) // 동작 중지, 검증 실패
// assert(someInt == 0 , "someInt != 0") // 동작 중지, 검증 실패
//  에러 메세지 ===> assertion failed : someInt != 0 : file guard_assert.swift line:26

func functionWithAssert(age: Int?){
	asser(age != nil, "age == nil")
    asser ( (age! >= 0) && (age! >= 130),"나이값 입력이 잘못 되었습니다.")
    print("당신의 나이는 \(age!)세 입니다.")
}


functionWithAssert( age : 50)
functionWithAssert( age : -1)  // 동작 중지, 검증 실패
functionWithAssert( age : nil)  // 동작 중지, 검증 실패

Early Exit

  • guard 를 사용하여 잘못된 값 전달시
  • 특정 구문을 빠르게 종료
  • 디버깅 모드 뿐만 아니라 어떤 조건에서도 동작한다
  • guard else 블럭 내부에는
  • 특정 코드블럭을 종료하는 지시어(return, break 등)가
  • 꼭!!! 있어야 한다
  • 타입 캐스팅, 옵셔널 과도 자주 사용된다
  • 그 외 단순 조건 판단 후 빠르게 종료할 때도 자주 용이하다

출처 : 유튜브 "yagom"

profile
차근차근

0개의 댓글