import UIKit
📌// if구문 : 단독으로 else 없이 사용가능
let first: Int = 5
let second: Int = 7
if first > second {
print("first > second")
} else if first < second {
print("first < second")
} else {
print("first == second")
}
///first < second
📌// switch 구문
// case가 비어있으면 실행 안 됨.
// 비교될 값이 명확하게 한정적이지 않을때에는 default를 넣어줘야함.
let integerValue: Int = 5
switch integerValue {
case 0:
print("Value == zero")
case 1...10: // 범위연산자도 사용가능
print("Value == 1 ~ 10")
fallthrough //
case Int.min..<0, 101..<Int.max:
print("Value < 0 or value > 100")
break
//case 1.5...10.5: 상단에 Int로 지정해주었기 때문에 Double은 올 수 없음
default:
print("10 < Value <= 100")
}
📌/* fallthrough가 있어 바로 아래 case도 함께 실행됨
Value == 1 ~ 10
Value < 0 or value > 100
*/
📌//해당하는 값이 없는 경우 default로 가는 switch문
//let stringValue: String = "Joker"
//
//switch stringValue {
//case "yagom":
// print("He is yagom")
//
//default:
// print("\(stringValue) said 'I don't know who you are.'")
//}
/// Joker said 'I don't know who you are.'
let stringValue: String = "Liam Neeson"
switch stringValue {
case "yagom":
print("He is yagom")
case "Jay":
print("He is Jay")
case "Jenny", "Joker", "Nova":
print("He or She is \(stringValue)")
fallthrough
default:
print("\(stringValue) said \"I don't know who you are.\"")
}
///Liam Neeson said "I don't know who you are."
📌// Switch에 튜플 사용하기
//typealias NameAge = (name: String, age: Int)
//
//let tupleValue: NameAge = ("yagom", 99)
//
//switch tupleValue {
//case ("yagom", 99):
// print("정확히 맞췄습니다!")
//default:
// print("누굴 찾으시나요?")
//}
//print(tupleValue)
///("yagom", 99)
📌// Wildcard pattern
//typealias NameAge = (name: String, age: Int)
//
//let tupleValue: NameAge = ("yagom", 99)
//
//switch tupleValue {
//case ("yagom", 50):
// print("정확히 맞췄습니다!")
//case ("yagom", _):
// print("이름만 맞았습니다. 나이는 \(tupleValue.age)입니다.")
//case (_, 99):
// print("나이만 맞았습니다. 이름은 \(tupleValue.name)입니다.")
//default:
// print("누굴 찾나요?")
//}
///이름만 맞았습니다. 나이는 99입니다.
📌// Value-Bindings 값바인딩
// let age, let name을 지정해 주지 않으면 찾을 수 없음
typealias NameAge = (name: String, age: Int)
let tupleValue: NameAge = ("yagom", 99)
switch tupleValue {
case ("yagom", 50):
print("정확히 맞췄습니다!")
case ("yagom", let age):
print("이름만 맞았습니다. 나이는 \(age)입니다.")
case (let name, 99):
print("나이만 맞았습니다. 이름은 \(name)입니다.")
default:
print("누굴 찾나요?")
}
///이름만 맞았습니다. 나이는 99입니다.
📌// where을 이용한 조건 확장
let 직급: String = "사원"
let 연차: Int = 1
let 인턴인가: Bool = false
switch 직급 {
case "사원" where 인턴인가 == true: // where의 비교에는 상수값이 틀리게 들어가도 상관없다.
print("인턴입니다.")
case "사원" where 연차 < 2 && 인턴인가 == false:
print("신입사원입니다.")
case "사원" where 연차 < 5:
print("연식이 좀 된 사원입니다.")
case "사원":
print("사원입니다.")
case "대리":
print("대리입니다.")
default:
print("누굴찾나요?")
}
///신입사원입니다.
📌//열거형을 입력값으로 받는 switch구문
enum School {
case primary, elementary, middle, high, college, university, graduate
}
let 최종학력: School = School.university
switch 최종학력 {
case .primary:
print("최종학력은 유치원입니다.")
case .elementary:
print("최종학력은 초등학교입니다.")
case .middle:
print("최종학력은 중학교입니다.")
case .high:
print("최종학력은 고등학교입니다.")
case .college:
print("최종학력은 대학입니다.")
case .university:
print("최종학력은 대학교입니다.")
case .graduate:
print("최종학력은 대학원입니다.")
}
///최종학력은 대학교입니다.
📌// 열거형의 case 대비
enum Menu {
case chicken
case pizza
}
let lunchMenu: Menu = .chicken
switch lunchMenu {
case .chicken:
print("반반 무많이")
case .pizza:
print("핫소스 많이 주세요")
//case _:
// print("오늘의 메뉴가 뭐죠?")
@unknown case _: // unknown속성을 부여할 수 있는 case는 case_ 혹은 default case 이다.
print("오늘의 메뉴가 뭐죠?")
}
///반반 무많이
import UIKit
// if구문 : 단독으로 else 없이 사용가능
let first: Int = 5
let second: Int = 7
if first > second {
print("first > second")
} else if first < second {
print("first < second")
} else {
print("first == second")
}
///first < second
// switch 구문
// case가 비어있으면 실행 안 됨.
// 비교될 값이 명확하게 한정적이지 않을때에는 default를 넣어줘야함.
let integerValue: Int = 5
switch integerValue {
case 0:
print("Value == zero")
case 1...10: // 범위연산자도 사용가능
print("Value == 1 ~ 10")
fallthrough //
case Int.min..<0, 101..<Int.max:
print("Value < 0 or value > 100")
break
//case 1.5...10.5: 상단에 Int로 지정해주었기 때문에 Double은 올 수 없음
default:
print("10 < Value <= 100")
}
/* fallthrough가 있어 바로 아래 case도 함께 실행됨
Value == 1 ~ 10
Value < 0 or value > 100
*/
//해당하는 값이 없는 경우 default로 가는 switch문
//let stringValue: String = "Joker"
//
//switch stringValue {
//case "yagom":
// print("He is yagom")
//
//default:
// print("\(stringValue) said 'I don't know who you are.'")
//}
/// Joker said 'I don't know who you are.'
let stringValue: String = "Liam Neeson"
switch stringValue {
case "yagom":
print("He is yagom")
case "Jay":
print("He is Jay")
case "Jenny", "Joker", "Nova":
print("He or She is \(stringValue)")
fallthrough
default:
print("\(stringValue) said \"I don't know who you are.\"")
}
///Liam Neeson said "I don't know who you are."
// Switch에 튜플 사용하기
//typealias NameAge = (name: String, age: Int)
//
//let tupleValue: NameAge = ("yagom", 99)
//
//switch tupleValue {
//case ("yagom", 99):
// print("정확히 맞췄습니다!")
//default:
// print("누굴 찾으시나요?")
//}
//print(tupleValue)
///("yagom", 99)
// Wildcard pattern
//typealias NameAge = (name: String, age: Int)
//
//let tupleValue: NameAge = ("yagom", 99)
//
//switch tupleValue {
//case ("yagom", 50):
// print("정확히 맞췄습니다!")
//case ("yagom", _):
// print("이름만 맞았습니다. 나이는 \(tupleValue.age)입니다.")
//case (_, 99):
// print("나이만 맞았습니다. 이름은 \(tupleValue.name)입니다.")
//default:
// print("누굴 찾나요?")
//}
///이름만 맞았습니다. 나이는 99입니다.
// Value-Bindings 값바인딩
// let age, let name을 지정해 주지 않으면 찾을 수 없음
typealias NameAge = (name: String, age: Int)
let tupleValue: NameAge = ("yagom", 99)
switch tupleValue {
case ("yagom", 50):
print("정확히 맞췄습니다!")
case ("yagom", let age):
print("이름만 맞았습니다. 나이는 \(age)입니다.")
case (let name, 99):
print("나이만 맞았습니다. 이름은 \(name)입니다.")
default:
print("누굴 찾나요?")
}
///이름만 맞았습니다. 나이는 99입니다.
// where을 이용한 조건 확장
let 직급: String = "사원"
let 연차: Int = 1
let 인턴인가: Bool = false
switch 직급 {
case "사원" where 인턴인가 == true: // where의 비교에는 상수값이 틀리게 들어가도 상관없다.
print("인턴입니다.")
case "사원" where 연차 < 2 && 인턴인가 == false:
print("신입사원입니다.")
case "사원" where 연차 < 5:
print("연식이 좀 된 사원입니다.")
case "사원":
print("사원입니다.")
case "대리":
print("대리입니다.")
default:
print("누굴찾나요?")
}
///신입사원입니다.
//열거형을 입력값으로 받는 switch구문
enum School {
case primary, elementary, middle, high, college, university, graduate
}
let 최종학력: School = School.university
switch 최종학력 {
case .primary:
print("최종학력은 유치원입니다.")
case .elementary:
print("최종학력은 초등학교입니다.")
case .middle:
print("최종학력은 중학교입니다.")
case .high:
print("최종학력은 고등학교입니다.")
case .college:
print("최종학력은 대학입니다.")
case .university:
print("최종학력은 대학교입니다.")
case .graduate:
print("최종학력은 대학원입니다.")
}
///최종학력은 대학교입니다.
// 열거형의 case 대비
enum Menu {
case chicken
case pizza
}
let lunchMenu: Menu = .chicken
switch lunchMenu {
case .chicken:
print("반반 무많이")
case .pizza:
print("핫소스 많이 주세요")
//case _:
// print("오늘의 메뉴가 뭐죠?")
@unknown case _: // unknown속성을 부여할 수 있는 case는 case_ 혹은 default case 이다.
print("오늘의 메뉴가 뭐죠?")
}
///반반 무많이
'모바일앱 > Swift' 카테고리의 다른 글
[알고리즘] 연, 월, 일 을 입력하여 요일을 영문으로 출력하는 코드만들기 (0) | 2021.12.12 |
---|---|
날짜 계산하기 (0) | 2021.12.11 |
structures and Classes (+ enum) (0) | 2021.12.09 |
Loops (반복문) (0) | 2021.12.08 |
Enumeration (열거형) (0) | 2021.12.08 |
Array (0) | 2021.12.08 |
Day11_extra_Tuple (0) | 2021.12.07 |
Day10 closure (0) | 2021.12.03 |