(편의상 편한 말투로 작성하는 점 이해 부탁드립니다.😅)
(부정확한 정보가 있을 수 있습니다. 지적 환영🤩)
오늘은 조건문에 알아보겠습니당~
겸사겸사 조건문과 비슷한 기능을 하는 것들도 더 알아봅시다.
if-else
가장 먼저 if-else문을 알아보도록 하겠습니다.
if-else는 직역하면 알 수 있듯이 만약 ~~라면 OO 아니면 XX 이런 식이라고 생각하면 될 것 같습니다😅
아래 예제는 가장 기본적인 if-else문의 사용방법입니다.
if 조건 {
조건이 true일 때 실행되는 Code
}
if 조건 {
조건이 true일 때 실행되는 Code
} else {
조건이 false일 때 실행되는 Code
}
if 조건1 {
조건1이 true일 때 실행되는 Code
} else if 조건2 {
조건1이 false이면서 조건2가 true일 때 실행되는 Code
} else {
조건이 false일 때 실행되는 Code
}
다른 언어들과 크게 다른 점이 없어보이지만 swift의 if문 조건에는 항상 true OR false가 들어가야 합니다. 간혹 다른 언어의 if 조건에 0 또는 1이 들어가는 경우도 있는데 swift는 안 됩니다😭
아래는 간단한 예제입니다.
let animal = "cat"
if animal == "dog" {
print("강아지")
} else if animal == "cat" {
print("고양이")
} else {
print("Error")
}
// 고양이
switch
다음은 또 다른 조건문인 switch문 입니다. switch문은 if문과는 다르게 조건에 값이 들어갈 수 있습니다.
맨 위의 case부터 차례대로 검사하고 모든 case가 false일 때 default가 실행됩니다.
아래는 기본적인 사용 방법입니다.
switch 조건대상 {
case 조건1:
조건1이 true일 때 실행되는 Code
case 조건2:
조건2이 true일 때 실행되는 Code
default:
조건1, 조건2 모두 false일 때 실행되는 Code
}
조건 대상에 대한 모든 경우의 수가 case로 작성되어 있다면 default를 생략할 수 있습니다.
let isCheck = true
switch isCheck {
case true: print("참")
case false: print("거짓")
}
아래 switch문은 모든 color에 red, green, blue 외의 값이 들어갈 수 있기 때문에 Switch must be exhaustive라는 Error가 발생합니다. 이런 경우에는 default를 명시해줘야 합니다.
let color = "red"
switch color {
case "red": print("빨강")
case "green": print("초록")
case "blue": print("파랑")
}
아래 예제처럼 범위연산자를 사용할 수 있습니다.
let month = 3
switch month {
case 1...3: print("1분기")
case 4...6: print("2분기")
case 7...9: print("3분기")
case 10...12: print("4분기")
default: print("올바르지 않은 달입니다.")
}
삼항연산자
삼항연산자를 사용하면 간단한 조건을 검사할 때 코드가 짧아지고 간편하다는 장점이 있습니다. 다만 조건이 많아질수록 가독성이 급격하게 떨어지기 때문에 상황에 맞게 사용하는게 좋을 것 같습니다.
아래는 간단한 if-else문을 삼항연산자로 변환한 예제입니다. 아래 두 코드의 결과는 같지만 두 번째 코드가 더 간결해 보이네요.
let animal = "cat"
if animal == "dog" {
print("강아지입니다.")
} else {
print("강아지가 아닙니다.")
}
let animal = "cat"
animal == "dog" ? print("강아지입니다.") : print("강아지가 아닙니다.")
그럼 조금 더 복잡한 조건문을 삼항연산자로 바꿔볼까요?
아래는 예제를 보면 if문은 코드는 길지만 한눈에 읽기가 쉽고 삼항연산자는 단 한 줄이지만 바로 어떤 코드인지 파악하기가 어렵네요.
이처럼 코드가 짧다고 무조건 좋은 것은 아닙니다. 코드의 길이보다 가독성이 더 중요하다는 점을 유의하여 삼항연산자를 사용하면 좋을 것 같네요!
let animal = "cat"
if animal == "dog" {
print("강아지")
} else if animal == "cat" {
print("고양이")
} else if animal == "rabbit" {
print("토끼")
} else if animal == "pig" {
print("돼지")
} else {
print("불명")
}
let animal = "cat"
animal == "dog" ? print("강아지") : animal == "cat" ? print("고양이") : animal == "rabbit" ? print("토끼") : animal == "pig" ? print("돼지") : print("불명")
if let, guard let
이번에는 if let과 guard let 입니다.
이 둘은 비슷해 보이지만 다른 점이 있습니다.
if let은 어떤 조건을 검사한다기 보다 옵셔널 변수가 nil인지 값인지 검사하는 문법입니다.
guard let은 어떤 조건이 참이 아닐 때 실행되는 문법입니다.
예제를 통해 어떻게 사용하는지 알아보겠습니다.
먼저 if let 입니다. 옵셔널 변수에 값이 있을 땐 dog라는 임시 변수에 옵셔널을 언래핑한 값을 넣어 실행됩니다.
var animal: String? = "dog"
if let dog = animal {
print(dog) // 실행 됨
}
animal = nil
if let dog = animal {
print(dog) // 실행 안 됨
}
이번엔 guard let 입니다.
guard let은 참이 아닐 때 실행되는 문법이라고 했죠?? 아래는 animal 변수가 nil이라면 else 구문을 실행 후 함수를 종료하고 값이 있다면 else 구문을 무시하고 출력하는 함수입니다.
func isHaveAnimal() {
let animal: String? = "dog"
guard let _ = animal else {
print("동물이 없습니다.")
return
}
print("동물이 있습니다.")
}
그렇다면 if let과 guard let의 차이는 무엇일까요?
if let | guard let |
옵셔널이 nil인지 확인하고 2분기로 작업할 수 있다. | 조건이 false 일 때 else 문 안에서 상위 코드 블럭을 종료해야한다. |
지역변수로만 사용할 수 있다. | 전역변수로 사용이 가능하다. |
오늘은 이렇게 Swift에서 조건을 처리할 수 있는 다양한 방법들에 대해 알아보았습니다~~~
방법이 여러가지인 만큼 상황에 적절한 문법을 사용할 수 있도록 고민하는 과정이 필요할 것 같습니다😀
'Swift' 카테고리의 다른 글
[Swift] Optional이란? (0) | 2023.06.05 |
---|---|
[Swift] 반복문 정리 (0) | 2023.03.16 |
[Swift] Functions(함수) 정리 (0) | 2023.03.07 |
[Swift] Collection Type? (0) | 2023.03.05 |
[Swift] 기본 데이터 타입과 상수, 변수 (0) | 2023.03.04 |