100 Days of SwiftUI - Day 5
if
//if
if 조건 {
//조건이 true일때 실행
}
//if-else
if 조건 {
//조건이 true일때 실행
} else {
//조건이 false일때 실행
}
//if-else if-else
if 조건1 {
//조건1이 true일때 실행
} else if 조건2 {
//조건1이 false이고 조건2가 true일때 실행
} else if 조건3 {
//조건1,2가 false이고 조건3이 true일때 실행
} else {
//모든 조건이 false일때 실행
}
문자열의 비교 : 문자열 맨 앞부터 비교, 알파벳 순서로 뒤에 오는 것이 더 큼.
열거형의 비교 : 열거형의 경우 Comparable
프로토콜을 사용하면 서로 비교가 가능하다. 열거형 정의 시 맨 앞 케이스가 제일 작고, 나중에 정의할수록 커진다.
enum Weekday: Comparable {
case MONDAY
case TUESDAY
case WEDNESDAY
case THURSDAY
case FRIDAY
}
print(Weekday.MONDAY > Weekday.TUESDAY)
< , > , == , != , <= , >= 연산자
&& (AND 연산자), ||(OR 연산자)
switch
switch 식 {
case 식1:
구문1
case 식2:
구문2
case 식3:
구문3
...
case 식n:
구문n
default:
//모든case가 일치하지 않을 때 실행
}
각 case는 적어도 하나의 실행 가능한 구문을 가져야 한다.
C, Java에서는 case 다음 바로 case문을 작성해도 실행 가능했지만, Swift에서는 불가능하다.
let s = "A"
switch s {
case "a": //case가 실행 가능한 구문을 하나도 가지고 있지 않기 때문에 오류이다.
case "A":
print("Apple")
default:
print("None")
}
swift의 switch-case는 기본적으로 조건에 맞는 case 내의 구문들만 실행하고 빠져나온다.
(Java나 C같은 경우 break를 사용하지 않으면 조건에 맞는 case부터 하위의 case까지 계속해서 실행되는 것과 반대)
default
는 필수이다.
계속해서 문장을 실행하고 싶다면 키워드 fallthrough
를 사용한다.
let count = 5
print("카운트다운 시작")
switch count {
case 5:
print("5초")
fallthrough
case 4:
print("4초")
fallthrough
case 3:
print("3초")
fallthrough
case 2:
print("2초")
fallthrough
case 1:
print("1초")
fallthrough
default:
print("발사")
}
>> 카운트다운 시작
5초
4초
3초
2초
1초
발사
삼항 조건 연산자
평가식 ? true일 때 리턴되는 값 : false일 때 리턴되는 값
리턴되는 값을 대입연산자를 사용하여 변수에 할당할 수 있다.
let l1 = 1 > 2 ? true : false
WTF : What, True, False
What: 1>2
True: true
False: false
if-else문같은 경우 삼항 연산자 사용을 고려해볼 것.
삼항 조건 연산자는 두 개의 선택지가 있는 if-else문을 짧게 구현한다는 점에서 장점이 있지만,
사람에 따라 코드의 흐름을 따라가지 못할 가능성이 있음(코드를 읽기 어려울 가능성이 있음)
참고: https://www.hackingwithswift.com/100/swiftui/5