for-in 반복 구문은 반복적인 데이터나 시퀀스를 다룰 때 많이 사용한다.
for 임시상수 in 시퀀스아이템{
실행코드
}
ex) for-in 반복 구문의 활용
for i in 0...2 {
print(i)
}
//0
//1
//2
for i in 0...5 {
if i.isMultiple(of: 2){
print(i)
continue
}
print("\(i) 홀수")
}
//0
//1 홀수
//2
//3 홀수
//4
//5 홀수
let helloSwift: String = "Hello Swift"
for char in helloSwift{
print(char)
}
//S
//w
//i
//f
//t
var result: Int = 1
//시퀀스에 해당하는 값이 필요 없다면 와일드카드 식별자(_)를 사용
for _ in 1...3{
result *= 10
}
print("10의 3제곱은 \(result)")
ex) 기본 데이터 타입의 for-in 반복 구문 사용
//Ditionary
let friends: [String: Int] = ["A": 10, "B": 20, "C":30]
for tuple in friends{
print(tuple)
}
//("A": 10)
//("B": 20)
//("C": 30)
let 주소: [String: String] = ["시": "서울특별시", "시군구": "성동구", "동읍면": "용답동" ]
for (키, 값) in 주소{
print("\(키): \(값)")
}
//시군구: 성동구
//동읍면: 용답동
//시: 서울특별시
//Set
let 지역번호: Set<String> = ["02", "031", "032", "033", "041", "042", "043", "051", "052", "053", "054", "055", "061", "062", "063", "064"]
for 번호 in 지역번호{
print(번호)
}
//02
//031
//032
//033
//....
while과 repeat-while의 사용법은 다른 프로그래밍언어의 사용법과 다르지 않다.
repeat-while은 다른 언어의 do-while과 같은 역할을 한다.
ex) while 반복 구문의 사용
var names: [String] = ["A", "B", "C", "D"]
while names.isEmpty == false {
print("bye_\(names.removeFirst())")
// removeFirst()는 요소를 삭제함과 동시에 삭제한 요소를 반환한다.
}
//bye_A
//bye_B
//bye_C
//bye_D
ex) repeat-while 반복 구문의 사용
var names: [String] = ["A", "B", "C", "D"]
repeat {
print("bye_\(names.removeFirst())")
// removeFirst()는 요소를 삭제함과 동시에 삭제한 요소를 반환한다.
}while names.isEmpty == false
//bye_A
//bye_B
//bye_C
//bye_D
반복문을 작성하다 보면 종종 반복문을 중첩으로 작성하게 된다. 이때 반복문을 제어하는 키워드(break, continue 등)가 어떤 범위에 적용되어야 하는지 애매하거나 큰 범위의 반복문을 종료하고 싶은데 작은 범위의 반복문만 종료되는 등 예상치 못한 실수를 할 수도 있다.
그럴 때는 반복문 앞에 이름과 함께 콜론을 붙여 구문의 이름을 지정해주는 구문 이름표를 사용하면 좋다.
이름이 지정된 구문을 제어하고자 할 때는 제어 키워드와 구문 이름을 함께 써주면 좋다.
ex) 중첩된 반복문의 구문 이름표 사용
var numbers: [Int] = [3, 2342, 6, 3252]
numbersLoop: for num in numbers{
if num > 5 || num < 1 {
continue numbersLoop
}
var count: Int = 0
printLoop: while true {
print(num)
count += 1
if count == num{
break printLoop
}
}
removeLoop: while true{
if numbers.first != num{
break numbersLoop
}
numbers.removeFirst()
}
}
//3
//3
//3
//numbers에는 [2342, 6, 3252]가 나음
ex) 중첩된 반복문의 구문 이름표 사용2
var numbers: [Int] = [3, 4, 2342, 6, 3252]
numbersLoop: for num in numbers{
if num > 5 || num < 1 {
continue numbersLoop
}
var count: Int = 0
printLoop: while true {
print(num)
count += 1
if count == num{
break printLoop
}
}
removeLoop: while true{
if numbers.first != num{
break removeLoop
}
numbers.removeFirst()
}
print(numbers)
}
//3
//3
//3
//[4, 2342, 6, 3252]
//4
//4
//4
//4
[2342, 6, 3252]