1. Assert / Guard
- 앱 동작 중 생성하는 다양한 연산 결과값을 동적으로 안전하게 처리 / 확인을 도와주는 구문
2. Assertion (Assert)
- assert(::file:line:) 함수를 사용
- assert 함수는 디버깅 모드에서만 동작
- 디버깅 중 조건의 검증을 위하여 사용
- 실제 배포환경에서도 동작하는 precondition(::file:line:) 도 존재
var someInt: Int = 0
assert(someInt == 0, "not 0")
someInt = 1
assert(someInt == 0)
func withAssert(age: Int?) {
assert(age != nil, "age == nil")
assert((age! >= 0) && (age! <= 130), "wrong age")
print("age \(age!)")
}
withAssert(age: 50)
withAssert(age: -1)
withAssert(age: nil)
3. Early Exit / Guard
- guard를 사용하여 잘못된 값의 전달 시 특정 구문을 빠르게 종료
- 배포 환경에서도 동작
- guard else return / break 구문으로 동작
타입 캐스팅과 옵셔널도 자주 사용
func withGuard(age: Int?) {
guard let chechAge = age,
chechAge < 130,
chechAge >= 0 else {
print("wrong age")
return
}
print("age is \(checkAge)")
}
var count = 1
while true {
guard count < 3 else {
break
}
print(count)
count += 1
}
func someFunc(info: [String: Any]) {
guard let name: info["name"] as? String else {
return
}
guard let age: info["age"] as? Int else {
return
}
print("\(name): \(age)")
}
someFunc(info: ["name": "Jimin", "age": "20"])
someFunc(info: ["name": "Jimin"])
someFunc(info: ["name": "Jimin", "age": 20])