1. if 구문
- Swift의 if 구문은 값이 꼭 Bool 타입이여야 합니다.
- else if는 몇개가 이여져도 상관없으며, else 블록은 없어도 상관없습니다.
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 구문
- switch 구문도 소괄호를 생략할 수 있습니다.
- break 키워드 사용은 선택사항입니다, 이 방식은 예상치 못한 실수를 줄이는 데 도움이 됩니다.
- C언어에서는 정수 타입만 들어갈 수 잇엇으나, 스위프트에서는 다양한 값이 들어갈 수 있습니다. 각 case에 들어갈 비교 값은 입력 값과 데이터 타입이 같아야 합니다.
- 비교될 값이 명확히 한정적인 값(열거형 등)이 아닐때는 default를 꼭 작성해야합니다.
다양한 자료형에서의 switch-case 예제
1. 기본 예제
import Foundation
let value: Int = 5
switch value {
case 0:
print("zero")
case 1...10:
print("1~10")
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 = 3.0
switch doubleValue {
case 0:
print("Zero")
case 1.5...10.5:
print("1.5 <= value <= 10.5")
default:
print("Value == \(doubleValue)")
}
3. 문자열에서의 switch-case문
let stringValue: String = "Lumi"
switch stringValue {
case "asher":
print("I'm asher")
case "charlie":
print("I'm charlie")
default:
print("I'm \(stringValue)")
}
4. 튜플 자료형에서의 swich-case
typealias Tuple = (name: String, age: Int)
let testTuple = Tuple("Lumi", 25)
switch testTuple {
case ("Lumi", 25):
print("맞췄습니다!")
default:
print("떙~!")
}
5. 와일드카드 식별자를 통한 튜플 switch-case 구성
typealias Tuple = (name: String, age: Int)
let testTuple = Tuple("Lumi", 24)
switch testTuple {
case ("Lumi", 25):
print("맞췄습니다!")
case (_,25):
print("나이만 맞췄습니다. 이름은 \(testTuple.name)입니다.")
case("Lumi",_):
print("이름만 맞았습니다. 나이는 \(testTuple.age)입니다.")
default:
print("떙~!")
}
6. 값 바인딩을 사용한 switch-case문 구성
typealias Tuple = (name: String, age: Int)
let testTuple = Tuple("Lumi", 24)
switch testTuple {
case ("Lumi", 25):
print("맞췄습니다!")
case (let name,25):
print("나이만 맞췄습니다. 이름은 \(name)입니다.")
case("Lumi",let age):
print("이름만 맞았습니다. 나이는 \(age)입니다.")
default:
print("떙~!")
}
7. where을 이용한 switch-case 확장
let food = "Chicken"
let isFried = true
let isDeliverd = true
switch food {
case "Chicken" where isFried == true && isDeliverd:
print("후라이드치킨입니다. 배달도 됩니다.")
case "Chicken" where isFried == false:
print("양념치킨입니다.")
default:
print("치킨입니까?")
}
fallthorough의 이용
- swift의 switch문에는 break가 없습니다.
- 또한, case안은 비워둘 수 없습니다.
- fallthorough 키워드를 통해 다음 케이스로 넘어갈 수 있습니다.
let stringValue: String = "Joker"
switch stringValue {
case "batman":
print("I'm batman")
case "superman":
print("I'm superman")
case "Joker":
fallthrough
case "Ironman":
fallthrough
case "catwoman":
print("I'm \(stringValue)")
default:
print("I don't know who I am")
}
3. for - in 구문
- for-in 반복 구문은 반복적인 데이터나 시퀀스를 다룰 때, 많이 사용합니다.
for 임시 상수 in 시퀀스 {
실행코드
}
예제들
1. 기초적인 for문 사용
for i in 0...2 {
print(i)
}
2. continue의 사용
- continue를 사용하면 다음 시퀸스로 건너뜁니다.
for i in 0...5 {
if i.isMultiple(of: 2) {
print(i)
continue
}
print("\(i) == 홀수")
}
3. 문자열에서의 활용
let helloString: String = "hello swift"
for i in helloString {
print(i)
}
4. 와일드카드 사용
- 시퀸스에 해당하는 값이 필요없다면 와일드카드 식별자를 이용합니다,.
var result : Int = 1
for _ in 1...3 {
result *= 10
}
print("10의 세제곱근은 \(result)입니다.")
4. While 구문
- 특정 조건이 성립하는 한 블록 내부의 코드를 반복해서 실행
- 다른 언어의 while과 유사합니다.
- break, continue 등으로 제어 가능합니다.
1. while문 예시
var name : [String] = ["Lumi", "Asher", "Youth","Avery", "Charlie", "Kyu"]
while name.isEmpty == false {
print("Good bye \(name.removeLast())")
}
2. repeat-while 구문
- repeat-while 반복 구문은 다른 프로그래밍 언어의 do-while 구문과 비슷
- repeat 블록의 코드를 최초 1회 실행한 후, while 다음의 조건이 참이면, 블록 내부의 코드를 반복 실행합니다.
var name : [String] = ["Lumi", "Asher", "Youth","Avery", "Charlie", "Kyu"]
repeat {
print("Good bye \(name.removeLast())")
} while name.isEmpty == false
3. 구문 이름표
- 구문에 이름을 지어줘서 여러번 반복문을 사용할 경우 제어에 유리합니다.
var numbers: [Int] = [3, 2342, 6, 3252]
var count: Int = 1
numbersLoop: for num in numbers {
if num > 5 || num < 1 {
continue numbersLoop
}
printLoop: while true {
print(num)
count += 1
if count == num {
break printLoop
}
}
removeLoop: while true {
if numbers.first != num {
break numbersLoop
}
numbers.removeFirst()
}
}