[Swift] (기초) Assert & Guard / Assertion / Early Exit / Guard
2021. 9. 1. 20:31ㆍ🍏/Swift 기초 공부
/* assert와 guard*/ // 애플리케이션이 동작 도중에 생성하는 다양한 결과값을 동적으로 확인하고 안전하게 처리할 수 있도록 //확인하고 빠르게 처리 할 수 있습니다. //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 15 func functionWithAssert(age: Int?){ assert(age != nil, "age == nil") assert((age! >= 0) && (age! <= 130), "나이값 입력이 잘못되었습니다.") print("당신의 나이는 \(age!)세 입니다.") } functionWithAssert(age: 50) //functionWithAssert(age: -1) //functionWithAssert(age: nil) //Early Exit //guard를 사용하여 잘못된 값의 전달 시 특정 실행구문을 빠르게 종료합니다. //디버깅모드 뿐만 아니라 어떤 조건에서도 동작합니다. //guard의 else 블럭 내부에는 특정 코드블럭을 종료하는 지시어(return, break 등)가 꼭 있어야합니다. //타입캐스팅, 옵셔널과도 자주 사용됩니다. //그 외 단순 조건 판단후 빠르게 종료할 때도 용이합니다. func functionWithGuard(age: Int?){ guard let unwrappedAge = age, unwrappedAge < 130, unwrappedAge >= 0 else { print("나이값 입력이 잘못되었습니다.") return } print("당신의 나이는 \(unwrappedAge)세 입니다.") guard unwrappedAge < 100 else{ return } } var count = 1 while true { guard count < 3 else { break } print(count) count += 1 } func someFunction(info: [String: Any]){ guard let name = info["name"] as? String else { return } guard let age = info["age"] as? Int, age >= 0 else { return } print("\(name): \(age)") } someFunction(info: ["name": "jenny", "age": "10"]) someFunction(info: ["name": "mike"]) someFunction(info: ["name": "chan", "age": 10])
'🍏 > Swift 기초 공부' 카테고리의 다른 글
[Swift] (기초) Extension / 익스텐션 (0) | 2021.09.11 |
---|---|
[Swift] (기초) Protocol / 프로토콜 (0) | 2021.09.01 |
[Swift] (기초) Type Casting / 타입 캐스팅 / 다운 캐스팅 / 업 캐스팅 (0) | 2021.09.01 |
[Swift] (기초) Optional Chaining / 옵셔널 체이닝 (0) | 2021.08.28 |
[Swift] (기초) Instance / 인스턴스 생성 & 소멸 (init & deinit) (0) | 2021.08.24 |