
디버깅 중 조건 검증을 위해 주로 사용되며, 배포 버전에는 제외됩니다.
var someInt: Int = 0
// someInt가 0인지 확인
assert(someInt == 0, "someInt != 0") // 조건이 만족되므로 통과
someInt = 1
// assert(someInt == 0) // 동작 중지, 검증 실패
// assert(someInt == 0, "someInt != 0") // 동작 중지, 검증 실패
위의 예제에서 'someInt' 가 0인지 확인하고, 조건이 만족되지 않으면 프로그램이 중지됩니다.
func functionWithAssert(age: Int?) {
// age가 nil이 아닌지 확인
assert(age != nil, "age == nil") // age가 nil이 아니어야 함
// age가 0 이상 130 이하인지 확인
assert((age! >= 0) && (age! <= 130), "나이값 입력이 잘못되었습니다.") // 나이 범위를 확인
print("당신의 나이는 \(age!)세 입니다.")
}
functionWithAssert(age: 50) // 정상 동작, "당신의 나이는 50세 입니다." 출력
// functionWithAssert(age: -1) // 동작 중지, 검증 실패
// functionWithAssert(age: nil) // 동작 중지, 검증 실패
'functionWithAssert' 함수는 입력된 나이가 유효한지 검사하고,
유효하지 않으면 프로그램을 중지시킵니다.
주로 옵셔널 바인딩과 타입 캐스팅에서 자주 사용됩니다.
func functionWithGuard(age: Int?) {
// age를 언래핑하고, 유효한 나이 범위인지 확인
guard let unwrappedAge = age,
unwrappedAge < 130,
unwrappedAge >= 0 else {
print("나이값 입력이 잘못되었습니다.")
return
}
print("당신의 나이는 \(unwrappedAge)세 입니다.")
}
functionWithGuard(age: 50) // 정상 동작, "당신의 나이는 50세 입니다." 출력
functionWithGuard(age: -1) // "나이값 입력이 잘못되었습니다." 출력 후 함수 종료
functionWithGuard(age: nil) // "나이값 입력이 잘못되었습니다." 출력 후 함수 종료
'functionWithGuard' 함수는 입력된 나이가 유효하지 않을 경우 빠르게 함수를 종료합니다.
var count = 1
while true {
// count가 3 미만인지 확인, 아니면 반복문 종료
guard count < 3 else {
break
}
print(count)
count += 1
}
// 출력 결과
// 1
// 2
'guard' 를 사용하여 'count' 가 3 미만일 때만 반복을 계속하고, 그렇지 않으면 반복문을 종료합니다.
func someFunction(info: [String: Any]) {
// info 딕셔너리에서 name을 String으로 추출
guard let name = info["name"] as? String else {
return
}
// info 딕셔너리에서 age를 Int로 추출하고, 유효한 나이 범위인지 확인
guard let age = info["age"] as? Int, age >= 0 else {
return
}
print("\(name): \(age)")
}
someFunction(info: ["name": "jenny", "age": "10"]) // 아무 출력 없음 (age가 String)
someFunction(info: ["name": "mike"]) // 아무 출력 없음 (age 없음)
someFunction(info: ["name": "geuni", "age": 26]) // "geuni: 26" 출력
'someFunction' 함수는 딕셔너리에서 'name' 과 'age' 를 추출하여 유효한 경우에만 출력합니다.