본문 바로가기
모바일앱/Swift

조건문(IF, Switch)

by GeekCode 2021. 12. 8.
반응형

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