Swift

[Swift]흐름 제어 구문 - 조건문

느려도천천히 2021. 12. 19. 14:27

[Swift]흐름 제어 구문 - 반복문 참고해주세요!!

조건문

다른 말로는 분기문이라고도 하는 조건문은 프로그램에서 하나 또는 그 이상의 조건 값에 따라 특정 구문을 실행하도록 프로그램의 분기하는 역할
조건에 따라 실행될지 결정하는데 사용합니다
조건문은 크게 3가지입니다.
1)If
2)Guard
3)Switch

If 구문

하나 또는 그 이상의 조건을 평가하고 그 결과에 따라 코드 블록 실행
가장 많이 사용되는 구문 중 하나

if <조건식> {
    <조건식이 참일 때, 실행 구문>
}

조건식이 사용되는데 이 조건문은 반드시 Bool Type이며 true일 때, { }안에 실행됩니다

ex)
var adult = 20
var myAge = 10
if age < 20 {
    print("애기")
}

하지만 위와 같이 만약 age가 작으면 출력을 하고 싶다 그렇다면 다음 구문을 확인하자

If ~ else

if구문은 true일 때, 출력이 가능하지 false일 때는 출력이 불가하다
하지만 else { }을 이용하면 조건이 false일 때, 출력이 가능하다

if <조건식> {
    <true, 실행 구문>
} else {
    <false, 실행 구문>
}
ex)
var adult = 20
var myAge = 30

if age < 20 {
    print("애기")
}else {
    print("성인")
}    

If 구문은 중첩이 가능하다
너무 많은 if구문 중첩은 사용하지 않는 것이 좋다

var adult = 20
var myAge = 10
var gender = "M"

if age < 20 {
    if gender == "M" {
        print("남자 애기")
       }
}

If ~ else If구문

마지막 if구문 형태는 if ~ else if구문입니다
해당 구문은 조건식이 true or false가 아닌 여러 개의 조건식(다중 조건)을 사용할 때, 좋습니다

if <조건1> {
    <조건1 true>
} else if <조건2> {
    <조건2 true>
} else if <조건3> {
    <조건3 true>
}

Guard 구문

if구문과 마찬가지로 Bool Type으로 조건을 검사하여 출력
하지만, Guard구문은 조건이 false일 때, 출력이 됩니다

guard <조건식 또는 표현식> else {
    <false, 실행 구문>
}

Guard구문은 주로 후속 코드들이 실행되기 전 특정 조건을 만족하는지 확인하는 용도로 사용
전체 구문을 조기 종료하기 위한 목적으로 사용
무슨 말이냐 예제를 들어 확인합시다.

func divide(number: Int) {
    guard number != 0 else {
        print("0말고 다른 숫자를 넣으세요")
    }

    let result = 100 / number
    print(result)
}

위와 같은 예제가 있습니다
만약 guard구문이 없다고 가정할 시, 만약 number가 0이라는 숫자가 들어왔다고 하면 result부분에서 오류가 발생할 것이다
오류를 막기위해 위와 같은 guard구문 넣어줌으로써, 만약 0이라는 숫자가 들어왔다고 하면 guard구문에서 걸러진다 라고 생각하시면 될거같습니다

Switch 구문

해당 구문은 앞에 두 구문과 같은 분기문 일종 이지만, 처리 방식이 다릅니다
비교 대상을 두고 비교 대상과 같다고 한다면 실행이 되는 방식입니다

switch<비교 대상> {
    case <비교 대상1> :
        <비교 대상이 일치할 때, 실행>        
    case <비교 대상2> :
        <비교 대상이 일치할 때, 실행>
    default :
        <아무것도 일치하지 않을 때, 실행>
}

위와 같이 비교 대상을 설정하고, Case에서 일치를 하면 실행이 되는 구조입니다
default는 비교 대상과 case들이 아무것도 일치 하지 않을 때, 실행됩니다
Swift-switch구문은 다른 언어와 달리 break 생략이 가능하다

ex)
let myAge = 20

switch myAge {
    case 10 :
        print("10대")
    case 20 :
        print("20대")
    default :
        print("어르신...")
}

myAge를 비교 대상으로 정하고 각 case문에서 확인을 하고 실행이 가능하다

switch는 반드시 1개는 일치해야 된다
그럼으로 default를 사용해야되는 이유가 어느 것도 일치하지 않는다면 실행할 부분이 필요하기 때문이다