브래의 슬기로운 코딩 생활
4 - guard문, switch-case문 본문
guard문(조건식이 거짓이면 실행)
guard <불리언 표현식> else {
// 표현식이 거짓일 경우에 실행될 코드
<코드 블록을 빠져 나갈 구문>
}
// 표현식이 참일 경우에 실행되는 코드는 이곳에 위치
guard~let의 활용
var x = 1
while true {
guard x < 5 else { break }//조건(x<5)이 거짓일 때 실행(break)
print(x) //1 2 3 4, 조건(x<5)이 참일 때 실행
x = x + 1
}
if~let vs. guard~let
func printName(firstName:String, lastName:String?){
// if let
if let lName = lastName { // lastName이 nil이 아니면
print(lName,firstName)
}
else {
print("성이 없네요!")
}
// guard let
guard let lName = lastName else { // lastName이 nil이면
print("성이 없네요!")
return // early exit
}
print(lName,firstName)
}
printName(firstName: "길동", lastName:"홍")
printName(firstName: "길동", lastName:nil)
// 홍 길동
// 홍 길동
// 성이 없네요!
// 성이 없네요!
guard문
func multiplyByTen(value: Int?) {
guard let number = value, number < 10 else {//조건식(값이 있고 10보다 작은)이 거짓일 때 실행
print("수가 없거나 10보다 크다.") //거짓 : 값이 없거나 10보다 크면
return
}
print(number*10) //조건식이 참일 때 실행, 주의 : number를 여기서도 사용 가능
}
multiplyByTen(value: 3) //30
multiplyByTen(value: nil)
multiplyByTen(value: 20)
guard문은 값을 언래핑(unwrap)하기 위해서 옵셔널 바인딩을 이용하며, 그 값이 10보다 작은지 검사
- 변수가 nil이거나 그 값이 10보다 크면, else 절이 실행되어 에러 메시지가 출력하고 함수에서 빠져 나가도록 return문이 실행
- 10보다 작은 값이면, guard문 아래에 있는 코드가 실행되어 그 값에 10이 곱해진 값이 출력된다.
언래핑된 number 변수를 guard문 밖에 있는 코드가 사용할 수 있다!!
if문을 이용하여 언래핑된 변수는 그렇게 못함
switch-case문
switch 표현식
{
case match1:
구문
case match2:
구문
case match3, match4:
구문
default:
구문
} //주의 : 각 case문 마지막에 break가 자동으로 들어 있음
switch-case문 결합하기
var value = 3
var days : Int = 0
switch(value)
{
case 1,3,5,7,8,10,12:
print("31 일입니다")
case 4,6,9,11:
print("30 일입니다")
case 2:
print("28 or 29 일입니다")
default:
print("월을 잘못 입력하셨습니다")
}
// 여기서 콤마는 OR
switch-case문에서의 범위 지정 매칭
let num = 25
let count : String
switch num {
case 0...9:
count = "한자리 수"
case 10...99:
count = "두자리 수"
case 100...999:
count = "세자리 수"
default:
count = "네자리 수 이상"
}
print("\(count)입니다.")
switch-case문으로 변경하기
let weight = 60.0
let height = 170.0
let bmi = weight / (height*height*0.0001) // kg/m*m
var body = ""
if bmi >= 40 {
body = "3단계 비만"
} else if bmi >= 30 && bmi < 40 {
body = "2단계 비만"
} else if bmi >= 25 && bmi < 30 {
body = "1단계 비만"
} else if bmi >= 18.5 && bmi < 25 {
body = "정상"
} else {
body = "저체중"
}
print("BMI:\(bmi), 판정:\(body)")
switch-case에서 where절 사용하기
var temperature = 60
switch (temperature){
case 0...49 where temperature % 2 == 0:
print("Cold and even")
case 50...79 where temperature % 2 == 0:
print("Warm and even")
case 80...110 where temperature % 2 == 0:
print("Hot and even")
default:
print("Temperature out of range or odd")
}
where
특정 패턴과 결합하여 조건을 추가
var numbers: [Int] = [1, 2, 3, 4, 5]
for num in numbers where num > 3 {
print(num)
}
fallthrough
var value = 4
switch (value)
{
case 4:
print("4")
fallthrough
case 3:
print("3")
fallthrough
case 2:
print("2")
fallthrough
default:
print("1")
}
'2 - 겨울방학 > Swift 복습' 카테고리의 다른 글
6 - 1급 객체(first class object), 1급 시민(first class citizen), 클로저(Closure) (0) | 2023.12.28 |
---|---|
5 - 함수와 메서드(method) (0) | 2023.12.27 |
3 - 연산자(operator), 제어문 (0) | 2023.12.26 |
2 - 옵셔널 (optional), as(형 변환), is(타입 검사), Any와 AnyObject (1) | 2023.12.26 |
1 - 데이터 타입(자료형), 상수(let), 변수(var) (1) | 2023.12.26 |