Swift

Swift | 조건문에 관하여 - if / swift / guard

ziziDev 2024. 5. 9. 18:43
반응형

안녕하세요 !!

 

오늘은 조건문에 대해서 알아보고자 합니다

크게 조건문은 

 

if

guard

 

switch

 

이루어져 있답니다

 

우선 if문에 대해서 알아보고자 합니다 :0

 

if

 

이미지 하나만 보고 이해하면 끝입니다

진짜 진짜

 

진짜 끝임

별거 없어요

 

여기서 조건문은

참 또는 거짓

Bool값으로 나올 수 있는 코드를 작성해야합니다

 

if문은 조건문이 참일 때 실행할 구문으로 들어가서 실행됩니다

 

 

 

if문부터 

if else 구문

if else if else 구문을 한 번에 정리해 보았답니다 :)

 

특징은 조건 2개도 사용이 가능하고 응용 범위가 넓다는점!!

(모든 조건에 대한 처리가 가능하다!!!!!)

 

그리고 조건을 앞에서 배운 연산자를 사용하여 &&(AND) ||(OR)을 사용이 가능하답니다

중첩해서 사용이 가능하며

선택적으로 조건을 코드로 만들어 실행할 수 있는 분기처리를 할 수 있습니다

 

예를 들어 패스워드 자리수나 가위바위보같은 코드에서 많이 사용한답니다 :)

 

 

만약 2개의 조건을 다 만족했을 때는??

두 개 다 출력이 될까요??

정답은?

 

아닙니다!!

 

2개 다 만족하지만 첫 번째 조건을 만나고 빠져나오게 됩니다

 

 

 

여기 예시에서는 좀 더 조건을 주고

양수에 짝수를 출력하는 경우에 대해서 코드를 작성했습니다

 

 

다음으론 조건을 작성할때 제일 조건의 범위가 낮은것부터 작성하는게 아닌

높은것부터 작성해야합니다!

 

위 코드를 보면 수정전 코드처럼 70점부터 조건을 작성하게 되면

90점을 받은친구라도 70점 이상으로 나온답니다

 

마지막으로 && ||로 연결하는 법입니다

 

 

&&은 말 그대로 두개의 조건이 만족했을때 출력이 되며

||의 경우 두 개 중 하나의 조건만 만족해도 코드가 실행된답니다

 

다음으로 switch구문에 대해서 알아보고자 합니다

 

switch

다양한 기능이 있는 여러 개의 조건 비교에 효율적이지 않지만 

if문 보다 한정적인 상황에서 사용하게 됩니다

 

여러 case에 대한 조건 분기를 제공하는 제어문이라고 생각하면 됩니다

switch문은 특정 값을 검사하고 그 값에 따라 여러 가지 경우를 처리할 때 사용이 됩니다

 

switch value {
case pattern1:
    // pattern1에 매치될 때 실행되는 코드
case pattern2:
    // pattern2에 매치될 때 실행되는 코드
...
default:
    // 어떤 case에도 매치되지 않을 때 실행되는 코드
}

 

이렇게 기본적으로 작성을 할 수 있답니다

 

 

day의 변수가 "saterday"이므로 switch구문에서 동일한 case를 찾아서 출력을 하게됩니다

그리고 여기서 특징을 알 수 있답니다 :)

뭘까요?

바로!

 

스위치문에서는

케이스를 ,(콤마)로 하나의 케이스에 여러 매칭값을 넣을 수

가 있답니다

 

그리고 switch문은 값을 가능한 모든 경우의 수를 생각해서 다루어야 하고 만약 그 예외도 발생이 할 것 같으면

default를 사용하면 된답니다 :)

 

 

bool은 true / false 명확히 

2가지로 나뉘기 때문에 default가 없는걸 확인할 수 있답니다

 

 

break가 사용되었기 때문에 해당 case에서 메시지를 출력하고 나서 switch문 전체를 빠져나오게 됩니다

 

for문도 마찬가지로 break문을 만나면 빠져나오게 된답니다

이건 나중에 제어전송문에서 자세히 다루는걸루 ⭐️

 

 

사실상 case 0...10은 모다?.. 

~= 내포되어 있다고 생각하면 됩니다

 

 

이렇게 코드로 보면 바로 이해가 될거라고 생각됩니다

 

11...30은 25에 들어가 있으므로

true

 반환하는걸 확인할 수 있답니다

 

 

switch문에서 fallthrough가 있답니다

이건 다음 case도 만족하지 않아도

강제로 실행해!!

라는 뜻이랍니다

고로

2

3

 

출력되는걸 확인할 수 있습니다

 

여기서 switch에 값을 할당할 수가있는데

이걸 바인딩이라고 말합니다

바인딩이란?

옵셔널 ? 값을 안전하게 해제하고 사용할 수 있도록 하는 프로세스를 뜻합니다

존재하지 않을 수 있는 변수나 상수를 가지고 올 수 있으니 에러가 발생하지 않게 안전하게 들고 올 수 있답니다

안전하게 들고와서 사용하는 방법도 있는데 이건 다음에 학습하는걸루!

 

 

바인딩된값 .some을 사용하여 해당 값을 출력합니다

하지만 값이 없는 경우 .none으로 들어가 Name is nil이라고 출력이 됩니다

 

switch문의 마지막으로 where절을 뺄 수 없답니다

 

where 절은 switch문의 case 블록 내부에 추가되며 해당 case가 선택되었을 때

추가적인 조건을 검사하게 됩니다

 

조건이 참이면 해당 case 블록이 실행되고 거짓이면 다음 case로 이동하게 됩니다

 

 

where == 조건을 검사한다!

 

 

 

마지막으로 guard문에 대해서 알아봅시다!

guard문

 

말 그대로 문지기 역할을 한다고 생각하면 됩니다

 

주어진 표현식의 결과가 참인지 거짓인지에 따라 구문의

진행 여부를 결정짓는 방식의 조건문이라고 할 수 있습니다

 

문지기 역할을 한다고 했는데요

풀어서 이야기하자면

후속 코드들이 실행되기 전에 반드시 특정 조건을 만족하는지 확인하는 용도랍니다

 

guard문을 사용하게되면  오류가 발생을 줄여주고

조기 종료를 하기 위한 목적으로 사용이 되는점!!

 

if와 guard문의 차이점

 

guard구문에서 else 블록이 필수!!

표현식의 결과가 참일 때 실행되는 블록이 없다는 점

 

 

 

 

위의 guard문은 

 

name이란 매개변수가 nil인지를 확인하고

nil일 경우 이름이 제공되지 않았습니다를 출력하고 함수를 종료하게 됩니다

 

그렇지 않으면 옵셔널 값을 안전하게 해제하여 안녕 인사를 출력하게 됩니다

 

 

** 잘못된 정보가 있다면 꼭 댓글로 알려주세요!**

 

 

 

 

참조

앨런 스위프트 문법 강의 자료

chat GPT

swift 공식문서

반응형