if 명령어 만 단독으로 사용해도되고, else, else if 와 조합해서 사용 가능
조건을 지정하고 해당 조건이 true이면 선택한 코드 실행
let firstCard = 11
let secondCard = 10
if firstCard + secondCard == 21 {
print("잭팟!")
}
👆 조건이 true이면 중괄호 { } 안의 코드가 프린트 됩니다.
let firstCard = 11
let secondCard = 10
if firstCard + secondCard == 21 {
print("잭팟!")
} else {
print("실패")
}
if score > 9000 {
print("It's over 9000!")
}
if score <= 9000 {
print("It's not over 9000!")
}
+ else 문
if score > 9000 {
print("It's over 9000!")
} else {
if score == 9000 {
print("It's exactly 9000!")
} else {
print("It's not over 9000!")
}
if score > 9000 {
print("It's over 9000!")
} else if score == 9000 {
print("It's exactly 9000!")
} else {
print("It's not over 9000!")
}
else if 블록을 여러 개 사용하면 각 블록마다 별도의 조건을 설정할 수 있습니다. 예를 들어, else if 블록을 2개 사용하면 총 3개의 조건을 검사할 수 있습니다: 첫 번째 if 조건과 2 개의 else if 조건, 그리고 마지막 else 블록으로 처리되지 않은 모든 경우를 다룰 수 있습니다.
let score = 75 if score > 90 { print("Grade: A") } else if score > 80 { print("Grade: B") } else { print("Grade: C") }
if !stayOutTooLate && !nothingInBrain {
action = "cruise"
}
!stayOutTooLate 와 !nothingInBrain 두 조건을 검사
두 조건 모두 거짓 일 때 "cruise"
let stayOutTooLate = false
let nothingInBrain = false
var action = ""
if !stayOutTooLate && !nothingInBrain {
action = "cruise"
}
print(action) // Output: "cruise"
switch 비교값 {
case 패턴:
/*실행구문*/
default: //else if 같은 개념
/*실행구문*/
}
switch 입력 값 {
case 비교 값1
//실행 구문
case 비교 값2
//실행 구문
// 이 case를 마치고 switch 구문을 탈출하지 않음. 아래 case로 계속 진행
fallthrough
case 비교 값3, 비교 값4, 비교 값5 // 한 번에 여러 값과 비교 가능
break // 탈출(종료)
default : // 한정된 범위가 명확하지 않다면 default사용 필수
//실행 구문
}
let chr = "a"
if chr == "a" {
print("캐릭터는 a 입니다.")
}
else if chr == "b" {
print("캐릭터는 b 입니다.")
}
//캐릭터는 a 입니다.
let chr = "a" //"b" 로 바꾸면 결과값은 "이것은 b 입니다."로 바뀜
switch chr {
case "a" :
print("이것은 a 입니다.")
case "b" :
print("이것은 b 입니다.")
default:
print("아무것도 선택되지 않았습니다.")
}
//이것은 a 입니다.
let score = 85
switch score {
case 0..<60:
print("You failed")
case 60..<80:
print("You passed")
case 80...100:
print("You did great!")
default:
print("Invalid score")
}
let someValue: Any = 5
switch someValue {
case 0 as Int:
print("It's an integer 0")
case let x as Int where x > 0:
print("It's a positive integer: \(x)")
case is Double:
print("It's a double value")
case let text as String:
print("It's a string: \(text)")
default:
print("It's something else")
}
let number = 2
switch number {
case 1:
print("One")
case 2:
// 아무런 코드도 없는 경우
case 3:
print("Three")
default:
print("Other")
}
enum School {
case 유치원, 초등학교, 중학교, 고등학교, 대학교
}
let 나의학력: School = .대학교
switch 나의학력 {
case .유치원:
print("저의 최종학력은 \(School.유치원) 입니다.")
case .초등학교:
print("저의 최종학력은 \(School.초등학교) 입니다.")
case .중학교:
print("저의 최종학력은 \(School.중학교) 입니다.")
case .고등학교:
print("저의 최종학력은 \(School.고등학교) 입니다.")
case .대학교:
print("저의 최종학력은 \(School.대학교) 입니다.")
}
// 저의 최종학력은 대학교 입니다.
enum Menu {
case Pizza
case Chicken
}
let lunchMenu: Menu = .Pizza
switch lunchMenu {
case .Chicken:
print("양념치킨")
case .Pizza:
print("도미노피자!")
case _: // default와 같은 표현
print("치킨소스 추가해주세요")
}
//도미노피자!
Menu라는 열거형에 나중에 case를 추가할 거 같아서 해당 열거형의 값을 처리하는 switch 구문의 마지막 case로 와일드카드 case(_)를 미리 추가했습니다. 그러면 나중에 Menu 열거형에 case를 추가해도 switch 구문에서 컴파일 오류가 발생하지 않게 됩니다.
문법적으로 오류가 없지만 논리적으로 오류가 발생할 수 있는 충분한 여지가 생기게 됩니다. 이런 문제를 방지하기 위해 unknown 속성을 사용할 수 있습니다.
enum Menu {
case Pizza
case Chicken
case Hamburger
}
let lunchMenu: Menu = .Pizza
switch lunchMenu {
case .Chicken:
print("양념치킨")
case .Pizza:
print("도미노피자!")
@unknown case _: // default와 같은 표현
print("치킨소스 추가해주세요")
}
let score = 85
if score >= 90 {
print("A")
} else if score >= 80 {
print("B")
} else if score >= 70 {
print("C")
} else if score >= 60 {
print("D")
} else {
print("F")
}
let temperature = 25
if temperature < 0 {
print("Freezing")
} else if temperature >= 0 && temperature < 10 {
print("Cold")
} else if temperature >= 10 && temperature < 20 {
print("Cool")
} else if temperature >= 20 && temperature < 30 {
print("Warm")
} else {
print("Hot")
}
let age = 25
let isStudent = true
if age >= 18 && isStudent {
print("Adult student")
} else if age < 18 && isStudent {
print("Minor student")
} else if age >= 18 && !isStudent {
print("Adult non-student")
} else {
print("Minor non-student")
}
var optionalName: String? = "Alice"
if let name = optionalName {
print("Hello, \(name)")
} else {
print("Hello, Anonymous")
}
let direction = "north"
switch direction {
case "north":
print("Go north")
case "south":
print("Go south")
case "east":
print("Go east")
case "west":
print("Go west")
default:
print("Unknown direction")
}
let point = (1, 1)
switch point {
case (0, 0):
print("At the origin")
case (_, 0):
print("On the x-axis")
case (0, _):
print("On the y-axis")
case (-2...2, -2...2):
print("Inside the box")
default:
print("Outside the box")
}
열거형을 처리할 때 switch 문이 가독성과 유지보수성에서 좋음
enum CompassPoint {
case north, south, east, west
}
let direction = CompassPoint.east
switch direction {
case .north:
print("Go north")
case .south:
print("Go south")
case .east:
print("Go east")
case .west:
print("Go west")
}