if 문
- 특정 조건이 참(true)인지 검사하고, 그 조건이 만족되면 해당 코드 블록을 실행하는 제어문이다
var userPassword = "Royce123"
if userPassword.count >= 8 {
print("비밀번호 길이가 적절합니다.")
}
if-els 문과 if-else if 문
if userPassword.count >= 8 {
print("비밀번호 길이가 적절합니다.")
} else {
print("비밀번호가 너무 짧습니다. 최소 8자 이상 입력해주세요.")
}
if userPassword.count > 30 {
print("비밀번호가 너무 깁니다.")
} else if userPassword.count >= 8 {
print("비밀번호 길이가 적절합니다.")
} else {
print("비밀번호가 너무 짧습니다. 최소 8자 이상 입력해주세요.")
}
if userPassword.count > 0 {
if userPassword.count > 30 {
print("비밀번호가 너무 깁니다.")
} else if userPassword.count >= 8 {
print("비밀번호 길이가 적절합니다.")
} else {
print("비밀번호가 너무 짧습니다. 최소 8자 이상 입력해주세요.")
}
} else {
print("비밀번호를 입력해주세요.")
}
switch 문
- 특정 값에 대한 다양한 경우(case)를 처리할 때 사용하는 조건 분기문이다
- 여러 case를 명확하게 구분할 수 있으며, 각 case마다 해당하는 코드 블록이 실행된다
- 모든 가능한 경우를 다루어야 하므로, 누락되는 경우가 있다면 반드시 default 구문을 작성해야 한다
- 각 case에는 실행할 문장이 하나 이상 있어야 하며, 만약 아무런 동작도 하지 않으려면
break를 입력해야 한다
- Swift에서는 각 case가 자동으로 종료되므로, 일반적인 경우에는 명시적으로
break를 작성할 필요가 없다
- if 문 보다 한정적인 상황에서 사용한다
let fruit = "Apple"
switch fruit {
case "Banana":
print("노란색 과일입니다.")
case "Apple":
print("빨간색 또는 초록색 과일입니다.")
case "Orange":
print("오렌지색 과일입니다.")
default:
print("알 수 없는 과일입니다.")
}
let score = 85
switch score {
case 0..<50:
print("C")
case 50..<80:
print("B")
case 80...100:
print("A")
default:
print("잘못된 점수입니다.")
}
※ 패턴 매칭 연산자
var num = 30
0...50 ~= num
51...100 ~= num
※ 바인딩
- 바인딩은 어떤 값(변수나 상수의 값)을 새롭게 이름을 붙여 사용하는 것을 말한다
- 사용하는 이유:
- 가독성 향상: 복잡한 표현이나 긴 변수 이름 대신 간단한 이름을 사용하면, 코드를 읽고 이해하기 쉬워진다
- 재사용성: 한 번 바인딩된 값은 해당 케이스 내에서 계속 사용할 수 있기 때문에, 값을 여러 번 참조할 때 편리하다
- 코드의 안전성: 조건에 맞는 값이 무엇인지 명확하게 파악할 수 있어, 오류를 줄일 수 있다
var a = 7
let b = a
switch 문에서의 바인딩
let num = 7
switch number {
case let n:
print("바인딩된 값은 \(n)입니다.")
default:
break
switch 문과 where 절
where절은 바이딩된 값에 추가 조건을 붙일 때 사용된다(조건을 확인하는 키워드)
where절을 사용하는 이유:
- 추가 조건 부여: 바인딩 후에 그 값이 특정 조건을 만족할 때만 코드를 실행할 수 있도록 해, 더욱 세밀한 분기를 가능하게 한다
- 명확한 의도 표현: 코드만 봐도 어떠한 상황에서 어떤 코드를 실행하는지 쉽게 이해할 수 있다
- 이렇게 하면 단순히 값을 바인딩하는 것 이외에도, 그 값이 특정 조건을 만족하는 경우에만 해당 케이스가 실행되도록 할 수 있다
let age = 25
switch age {
case let a where a < 18:
print("미성년자입니다. (나이: \(a))")
case let a where a < 65:
print("성인입니다. (나이: \(a))")
default:
print("노년입니다. (나이: \(age))")
}