주장과 전제조건은 런타임 시 발생하는 조건이다. 추가적인 코드를 이행하기 전 이를 사용하여 코드 실행의 필수 조건을 만족하는지 확인 가능하다. 주장 또는 전제조건이 true일 경우 코드는 평소와 같이 진행되지만, false일 경우 상태가 유효하지 않으므로 코드 실행이 종료되고 앱 또한 종료된다.
let age = -3
assert(age >= 0, "Person's age can't be less than zero")
//이 주장은 결과적으로 실패하게 되는데 이유는 주어진 age의 값이 -3으로서 0보다 작기 때문이다.
//따라서 해당 주장은 false이며, 코드 실행이 종료되고, 앱 또한 현재 부 종료된다.
1. 만약에 평범하게 조건만 반복하는 경우에는 굳이 메세지를 입력할 필요없이 코드만으로 명시가 가능하다.
assert(age >= 0)
2. 만약 코드가 이미 조건 체크가 되어있다면 주장이 실패인지 알 수 있는 assertionFailure함수를 사용한다.
if age > 10 {
print("can ride Roller coaster")
} else if age >= 0 {
print("can ride ferris wheel")
} else {
assertionFailure("Person's age can't be less than Zero")
}
// 위 코드와 마찬가지로, 함수를 통해서 주장의 실패여부를 조건문으로 흐름제어 또한 가능하다.
조건이 거짓일 가능성이 있을 때마다 전제조건을 사용하지만 코드가 순차적으로 실행되기 위해선 반드시 참이어야 한다. 이럴 땐 함수에 유효한 값이 전달되는지 체크하기 위해 전제조건을 사용한다.
1. precondition() 함수를 통해 전제조건 작성이 가능하다. 이 함수에 true 또는 false로 판단될 표현식과 조건이 false일 경우 출력될 메세지를 전달한다.
precondition(index>0, "Index must be greater than zero")
//다음과 같이 전제조건을 명시할 수 있다.
//주장과 마찬가지로 preconditionFailure를 사용하여
//조건문에서의 전제조건 만족여부에 대한 함수를 정의할수 있다.
//주장과 전제조건에 대해서 공부해 보았는데, 주장과 전제조건은 코드의 실행에 대해서
//반드시 만족해야 하는 조건을 구체적으로 제시하는 구문이라고 판단된다.
//주장의 경우 명시된 조건을 만족하지 않는 경우 코드 실행 자체가 종료되게 되는 것이며,
//전제조건은 조건의 만족여부에 따라서 출력값을 전달해주는 매개체 역할을 담당하는 것이다.