반응형
1. if
스위프트의 if 구문은 조건의 값이 반드시 Bool 타입이어야 합니다.
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")
}
2. switch
Swift 에서의 switch 구문 특징
- break 키워드 사용은 선택사항 입니다.
- case 내부의 코드를 모두 실행하면 break 없어도 switch 구문이 종료됩니다.
- 다른 언어에서 사용하던 break 없이 연속 실행하던 트릭을 swift에서는 사용할 수 없습니다.
- case를 연속 실행하고자 하는 경우에는 fallthrough 키워드를 사용해야 합니다.
아래 사진과 예시에서 switch 구문 활용법을 익히시기 바랍니다.
(1) 범위 연산자를 이용한 switch 구문
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
default:
print("10 < Value <= 100")
}
(2) 부동소수 타입의 범위 연산을 통한 switch case 구성
let doubleValue: Double = 15.0
switch doubleValue {
case 0:
print("Value == zero")
case 1.5...10.5:
print("1.5 <= Value <= 10.5")
default:
print("Value == \(doubleValue)")
}
(3) 문자열 switch case 구성
let stringValue: String = "Ironman"
switch stringValue {
case "Hulk":
print("He is Hulk")
case "Captain":
print("He is Captain")
case "Ironman":
print("He is Ironman")
default:
print("\(stringValue) said 'I don't know who you are'")
}
(4) 튜플 switch case 구성, 와일드카드 식별자(_) 사용
typealias NameAge = (name:String, age:Int)
let tupleValue: NameAge = ("Stark", 199)
switch tupleValue {
case ("Stark", 49):
print("이름과 나이가 맞습니다.")
case (_, 49):
print("나이만 맞았습니다.")
case ("Stark", _):
print("이름만 맞았습니다.")
default:
print("틀렸습니다.")
}
(5) 값 바인딩을 사용한 튜플 switch case 구성
switch tupleValue {
case ("Stark", 49):
print("이름과 나이가 맞습니다.")
case (let name, 49):
print("나이만 맞았습니다. 이름은 \(name)입니다.")
case ("Stark", let age):
print("이름만 맞았습니다. 나이는 \(age)입니다.")
default:
print("틀렸습니다.")
}
(6) where를 사용해 switch case 확장
let line: String = "Mark"
let number: Int = 1
let isItTester: Bool = false
switch line {
case "Mark" where isItTester == true:
print("Mark의 \(number)번 시리즈의 테스트 버전입니다.")
case "Mark" where number < 2 && isItTester == false:
print("Mark의 초기 시리즈 입니다.")
case "Mark" where number >= 2 && isItTester == false:
print("Mark의 \(number)번 시리즈 입니다.")
case "Hulkbuster":
print("Hulkbuster 입니다.")
case "Javis":
print("Javis 입니다.")
default:
print("예상되는 버전이 없습니다.")
}
(7) 열거형을 입력값으로 받는 switch 구문
enum Heroes {
case ironman, hulk, captain, spiderman, antman, thor
}
let hero: Heroes = .thor
switch hero {
case .ironman:
print("아이언맨 입니다.")
case .hulk:
print("헐크 입니다.")
case .captain:
print("캡틴 입니다.")
case .spiderman:
print("스파이더맨 입니다.")
case .antman:
print("앤트맨 입니다.")
// default와 같은 기능
case _:
print("토르 입니다.")
}
(8) case를 처리하지 않으면 경고를 보여주는 unkwon 속성
아래의 switch 구문에서 thor 에 대한 case가 없더라도 경고성 메세지를 보여주지 않습니다. 이런 상태에서 case가 추가될 경우 경고성 메세지가 나오지 않아 문제가 될 수 있습니다.
enum Heroes {
case ironman, hulk, thor
}
let hero: Heroes = .thor
switch hero {
case .ironman:
print("아이언맨 입니다.")
case .hulk:
print("헐크 입니다.")
case _:
print("기타 히어로입니다.")
}
아래 case _: 앞에 @unknown을 붙여주면 case에서 빠진 부분을 표시할 수 있습니다.
반응형
'Mobile > Swift' 카테고리의 다른 글
[Swift - 문법] 함수 (0) | 2022.11.10 |
---|---|
[Swift - 문법] 반복문(for-in, while) (0) | 2022.11.09 |
[Swift - 문법] 삼항 조건 연산자와 범위 연산자 (0) | 2022.11.09 |
[Swift - 문법] 열거형 타입 (0) | 2022.11.04 |
[Swift - 문법] 튜플과 배열 (0) | 2022.11.03 |