Olive Study Room
[Swift] Control Flow 본문
더보기
control flow를 다시 정리하게 될 줄이야.. 생각보다 swift에는 다양한 control flow가 존재했다..
Control Flow
for, while
-> 한 작업을 오랜 시간에 걸쳐 반복 수행
if, switch
-> 특정 조건에 따라 분기시켜 실행
break, continue, fallthrough
-> 실행 흐름을 다른 부분으로 이동
[ for ]
for, for-in
1. for
2. for-in
- 일반적인 사용
for _ in 1...5 {
print("dev")
}
//dev
//dev
//dev
//dev
//dev
let index: [Int] = [1, 2, 3, 4]
for i in 0...index.count-1 {
print(index[i])
}
//1
//2
//3
//4
- 배열을 사용하는 경우
let indexs: [String] = ["Kim", "Park", "Lee"]
for index in indexs {
print(index)
}
//Kim
//Park
//Lee
- 튜플을 사용하는 경우
let members = ["Kim": 3, "Park": 5, "Lee": 7]
for (name, num) in members {
print("\(name) : \(num)")
}
//Kim : 3
//Lee : 7
//Park : 5
- String을 사용하는 경우
let sayHi = "Hi, dev"
for char in sayHi {
print(char)
}
//H
//i
//,
//
//d
//e
//v
[ while ]
반복횟수를 알 수 없을 때 사용함.
조건이 true일 때 반복.
while, repeat-while, do-while
1. while
var num = 1
var num2 = 5
while num2 > num {
print(num2)
num2 -= 1
}
//5
//4
//3
//2
2. repeat-while - 우선 실행하고 조건을 판별하기 때문에 while과 다름!
var num = 1
var num2 = 5
repeat {
print(num2)
num2 -= 1
} while num2 > num
//5
//4
//3
//2
[ if ]
c와 같으므로 생략
[ switch ]
let name = "Kim"
switch name {
case "Kim", "Lee":
print("Correct")
default:
print("choose")
}
[ break ]
// 백준 10952번
// 무한 루프
while true {
var line = readLine()!.split(separator: " ").map({Int($0)!})
if line[0] == 0 && line[1] == 0 {
break
}
print(line[0] + line[1])
}
loop 즉각 중지
[ continue ]
let name = "Kim"
var returnName = ""
let removeChar: [Character] = ["K", "m"]
for char in name {
if removeChar.contains(char) {
continue
}
else {
returnName.append(char)
}
}
print(returnName)
// i
loop를 중지하고 다음 loop를 진행한다.
[ fallthrough ]
let name = "Kim"
switch name {
case "Kim":
print("correct")
fallthrough
default:
print("default")
}
//correct
//default
switch-case의 경우 한 케이스를 타면 자동으로 break되는데, 이를 방지한다.
'Coding > iOS' 카테고리의 다른 글
[Swift] 소수점 다루기 (0) | 2021.06.23 |
---|---|
[Swift] Map VS compactMap VS flatMap (0) | 2021.06.23 |
[Swift] 고차함수(map, filter, reduce) (0) | 2021.06.07 |
[Swift] components(separatedBy:) & split (0) | 2021.06.07 |
[Swift] RawRepresentable (0) | 2021.05.01 |
Comments