조건문은 조건에 따라서 코드의 흐름을 제어할 때 사용한다. 스위프트에 코드 조건부를 추가하는 방법은 if와 switch구문 두 가지로 제공한다. 일반적으로 if구문은 가능한 결과가 적은 간단한 조건에 적합하다. switch 구문은 가능한 겨로가가 여러개이며 더 복잡한 조건에 적합하고 실행해야 할 적절한 코드 분기를 선택해야 하는 패턴매칭에 적합하다.
var temperature = 30
if temperature < 30 {
print(temperature)
}
// 만약 temperature 변수의 값이 30보다 작은 경우 클로저를 수행하게 된다.
var temperature = 30
if temperature < 30 {
print(temperature)
} else {
print("now is fun")
}
//if 조건문의 값이 false 인 경우 else 클로저가 실행된다.
var temperature = 30
if temperature < 30 {
print(temperature)
} else if temperature > 10 {
print("better")
} else {
print("now is fun")
}
스위치 구문은 값을 고려하고 가능한 여러 일치패턴과 비교한다. 이는 여러 가능한 상태에 대해 응답하기 위해서 if구문의 대체 구문으로 제공한다.
let someCharacter : Character = "z"
switch someCharacter {
case "a":
print("a")
case "z":
print("z")
default:
print("default")
let someCharacter : Character = "z"
switch someCharacter {
case "a", "z":
print("z")
default:
print("default")
let someCharacter : Int = 12
switch someCharacter {
case 1...10:
print("a")
case 11...20:
print("z")
default:
print("default")
let somePoint = (1, 1)
switch somePoint {
case (0, 0):
print("origin")
case (_, 0):
print("X-axis")
case (0, _):
print("Y-axis")
case (-1...1, -1...1):
print("inside")
default:
print("default")
//다음처럼 사용할 시 언더바의 활용을 볼 수 있다.
//또한 각 케이스에 닫힌 범위 연산자를 사용하여 케이스 범위를 지정해 줄수도 있다.
let point = (1, -1)
switch point {
case let (x, y) where x == y:
print("(\(x), \(y)) is on the line x == y")
case let (x, y) where x == -y:
print("(\(x), \(y)) is on the line x == -y")
case let(x, y):
print("(\(x), \(y))")
// 상수가 지닌 조건을 판별하여 리턴값을 체크해줄 수 있다.
let point = (9,0)
switch point {
case (let distance, 0), (0, let distance):
print("on an axis, \(distance) from the origin")
default:
print("not on axis")
}
//다음과 같이 케이스를 혼합하여 같은 값을 수행하도록 흐름 제어가 가능하며, 값 바인딩 또한 가능하다.