Iterating Collections
Collection을 열거한다 -> Collection에 저장된 모든 요소를 대상으로 반복처리 한다.
for-in
// Collection을 열거한다 -> Collection에 저장된 모든 요소를 대상으로 반복처리 한다.
// 배열, 딕셔너리, 셋 열거해보자
// 1. for in
print("Array,", "===============")
let arr = [1, 2, 3]
for num in arr {
// 1, 2, 3이 loop 상수인 num으로 순서대로 전달됨
print(num)
}
print("Set", "===========")
let set:Set = [1, 2, 3]
for num in set {
print(num)
}
print("Dictionary" ,"-===========")
let dict = ["A": "1", "B": "2", "C": "3"]
for num in dict {
print(num.key)
print(num.value)
}
for (key, value) in dict {
print("\(key) + \(value)")
}
forEach
print("Array", "=========")
let arr = [1, 2, 3]
arr.forEach { (num) in
print(num)
}
print("Set", "==========")
let set:Set = [1, 2, 3]
arr.forEach { (num) in
print(num)
}
print("Dictionary", "============")
let dict = ["A": 1, "B": 2, "C": 3]
dict.forEach { (elem) in
print(elem.key, elem.value)
}
차이점
// 두가지 함수를 이용해 열거
// 1. 배열을 열거
func withForIn() {
print(#function)
let arr = [1, 2, 3]
for num in arr {
// break
// coutinue
print(num)
return
}
}
func withForeach() {
print(#function)
let arr = [1, 2, 3]
arr.forEach { (num) in
// break, continue 사용불가 -> 반복문이 아니기 때문에
print(num)
return
}
}
withForIn() // return한 경우 함수 전체가 종료
withForeach() // return한 경우 현재 실행중인 클로저 하나만 종료 (반복횟수에는 영향을 주지 않는다.)