[Swift] assert / guard

HongDuHyeon·2023년 4월 2일
0
post-thumbnail
나는 중학교 2학년때 포인트 가드.

assert

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

value = 2
assert(value == 0, "값이 0 아닙니다.") //error

특정 조건을 체크하고 조건이 성립되지 않으면 에러를 발생시키는 함수이기 떄문에 첫번째 value는 통과했고 두번째 2로 바꿨을 땐 성립하지 않아 통과하지 못했다. assert문은 이런식으로 디버깅 모드에서 활용할 수 있다.

guard

  • 무언가를 검사하여 그 다음에 오는 코드를 실행할지 말지 결정 하는 것
  • guard문에 주어진 조건문이 거짓일 때 구문이 실행됨

함수안에서 사용하기 위해 만들어졌다고 보면 되고 보통 잘못된 값이 함수에 들어오는 상황을 방어하기 위해 사용한다.

guard문

guard 조건 else {
   // 조건이 false이면 else 구문이 실행되고
   return or throw or break를 통해 이 후 코드를 실행하지 않도록 한다.
}

guard 예제

아래와 같이 value가 0이 아니라면 return 하는 함수를 작성해봤다.

func guardTest(value: Int) {
    guard value == 0 else { return }
    print("안녕하세요")
}

guardTest 함수에 2를 넣으면 guard 문에 막혀 return을 해서 아무런 일도 일어나지 않는다.

guardTest(value: 2)

// ???

하지만 조건에 맞게 guardTest에 0을 넣는다면 제대로 print 값이 나온다.

guardTest(value: 0)

// 안녕하세요

guard optional binding

예전에 했던 if / let으로 옵셔널 바이딩과 다르게 guard문은 조건문 밖에서도 사용이 가능하다.

func guardTest(value: Int?) {
    guard let value = value else { return }
    print(value)
}

guardTest(value: 2) // 2

guardTest(value: nil) // 아무일도 일어나지 않는다.
profile
마음이 시키는 프론트엔드.. RN과 IOS를 곁들인..

0개의 댓글