반응형
이번엔 디버깅에 편리한 기능입니다.
애플리케이션 동작중 생성되는 연산 결과들을 동적으로 확인해
안전하고 빠르게 처리할 수 있습니다.
Assertion
assert(::file:line)함수를 사용합니다.
디버깅 모드에만 동작하구요, 조건검증에 사용합니다.
var num1 : Int = 0
assertion(num1 == 0, "someInt !")
var num2: Int = 1
assertion(num2 == 0, "num2 != 0")
//assertion failed: num2 != 0
음.. 하루만 더 일찍 공부했었으면 어제 코테문제를 풀면서 좀 덜 고생했겠네요.ㅜ
Guard
guard를 사용해 특정 실행구문이 잘못된 값을 전달하면
빠르게 종료시킵니다. 디버깅모드 + 어떤 조건에서도 동작합니다.
옵셔널과 같이 let-it 구문에서 사용
func guardEx(price: Int?){
guard let unrappedPrice = price,
unrappedPrice <= 100000 else {
print("너무 비싸서 안사요")
return
}
print("물건을 \(unrappedPrice)원에 구매했습니다.")
}
guardEx(price: 5000) //물건을 5000원에 구매했습니다.
guardEx(price: 5000000) //
반복문에 사용
var count = 0
while true {
guard count < 5 else {
break
}
print(count)
count += 1
} // 1 2 3 4
추가예제
func insertInfo( info: [String: Any]) {
guard let name = info["name"] as? String else{
return
}
guard let price = info["price"] as? Int, price < 20000 else{
return
}
guard let grade = info["grade"] as? Int, grade <= 5 else{
return
}
print("\(name)의 가격은 \(price)원이고 평가는 \(grade)점이다.")
}
insertInfo( info: ["name": "뚝불", "price": 10000, "grade": 5])
//뚝불의 가격은 10000원이고 평가는 5점이다.
insertInfo( info: ["name": "피자", "price": 10000000, "grade": 3])
insertInfo( info: ["name": "초밥", "price": "9900", "grade": 1])
반응형
'Language > Swift' 카테고리의 다른 글
Swift 익스텐션 (Extensions) (0) | 2021.03.15 |
---|---|
Swift 프로토콜 기초 (0) | 2021.03.14 |
Swift 타입캐스팅 (형변환) (0) | 2021.03.13 |
Swift 인스턴스의 생성과 소멸 (0) | 2021.03.12 |
Swift 프로퍼티 타입들 (0) | 2021.03.12 |