맵은 자신을 호출할 때 매개변수로 전달된 함수를 실행하여 그 결과를 다시 반환해주는 함수이다.
맵을 사용하면 컨테이너가 담고 있던 각각의 값을 매개변수를 통해 받은 함수에 적용한 후 다시 컨테이너에 포장하여 반환한다.
let numvers: [Int] = [0, 1, 2, 3, 4]
var Anumbers: [Int] = [int]()
Anumbers = numbers.map({ (number:Int) -> Int in
return number * 2
}) //map+클로저 사용
Anumbers = numbers.map{( return $0 * 2 }) //클로저의 축약형까지 사용
컨테이너 내부의 값을 걸러서 추출하는 역할을 한다. 필터의 매개변수로 전달되는 함수의 반환 타입은 Bool 타입이다.
let numbers: [Int] = [0, 1, 2, 3, 4, 5]
let evennumbers: [Int] = numbers.filter { (number: Int) -> Bool in
return number % 2 == 0
}
==
let evennumbers: [Int] = numbers.filter { $0 % 2 != 0 } // 축약형
결합의 기능이다. 컨테이너 내부의 콘텐츠를 하나로 합하는 기능을 실행하는 고차함수이다. 배열이라면 배열의 모든 값을 전달인자로 전달받은 클로저의 연산 결과로 합한다.
var A: Int = somenumbers.reduce(0, {
(first: Int, second: Int) -> Int in
return first - second
}) //0에서 내부의 모든값을 뺀다.
var A: Int = somenumbers.reduce(0) { $0 - $1}