예를 통해서 map 함수를 익혀보자. 아래와 같이 numbers array와 빈 doubledNumbers array를 만들어보자
let numbers: [Int] = [0, 1, 2, 3, 4]
doubledNumbers = [Int]()
그리고, map함수를 통하여 numbers의 각 요소를 2배하여 새로운 배열을 반환해보자.
doubledNumbers = numbers.map({ (num: Int) -> Int in
return num * 2
}
위의 코드는 생략을 통하여 아래와 같이 표현할 수 있다.
doubledNumbers = numbers.map { $0 * 2 }
이 또한, 예를 통하여 공부해보자. 아래와 같이 numbers array가 있다고 해보자.
let numbers: [Int] = [0, 1, 2, 3 ,4]
그리고, filter함수를 통하여 numbers 요소 중 짝수를 걸러내 새로운 배열로 변환해보자.
let evenNumbers: [Int] = numbers.filter { (num: Int) -> Bool in
return num % 2 == 0
}
map 함수와 마찬가지로 아래와 같이 생략이 가능하다.
let oddNumbers: [Int] = numbers.filter { $0 % 2 == 0 }
하나
로 통합해준다.예를 통하여 reduce 함수를 익혀보자. 먼저 아래와 같이 array가 있다고 생각해보자.
let someNumbers: [Int] = [2, 4, 6]
그리고 reduce함수를 통하여 someNumbers를 다 더해보자.(초깃값 : 0)
let sum: Int = someNumbers.reduce(0, {
(first: Int, second: Int) -> Int in
return first + second
})
또한, 아래와 같이 생략이 가능하다.
let sumFromThree = someNumbers.reduce(0) { $0 + $1 }
또다른 예.
let numbers: [Int] = [1,2,3,4,5]
var sum = numbers.reduce(0) { (result: Int, element: Int) -> Int in
print("\(result) + \(element)")
return result + element
}
0 + 1
1 + 2
3 + 3
6 + 4
10 + 5
let numbers = [28, 32, 64, 90]
let passed = numbers.allSatisfy { $0 >= 28 }
그냥 간단한 예를 통해서 알아보자
let nums: [Int] = [1, 2, 3, 4]
nums.forEach {
print($0) // 1 2 3 4
}
Dictonary일 경우에도 아래와 같이 받을 수 있다. (Juice_Maker proeject에서 사용했음)
let dict: [String : Int] = ["Miro" : 24, "Alex" : 26]
dict.forEach {
print(\($0.key), \($0.value))
}
⚠️ for - in 문과 forEach문의 차이점은?
1.continue
나break
는 for- in문에서는 사용이 가능하나, forEach문에서는 불가능하다.
2. for - in 문의 경우 return을 만나면 함수 자체가 종료가 된다. 그러나 forEach문의 경우 반복횟수에는 영향을 주지 않는다.func printForIn() { let nums = [1, 2, 3] for num in nums { print(num) return } } // 1 func printForEach() { let nums = [1, 2, 3] nums.forEach { print($0) return } } // 1 2 3