고차함수 map filter reduce 에 대해 알아 보겠습니다
본론에 앞서
$0은 고차함수에서 사용되는 클로저가 처리 하고 있는 현재의 요소를 나태냈습니다
map 함수는 기존 컬렉션 안에 있는 데이터를 가공해서 새로운 컬렉션을 만들어줍니다
예시코드
var arr = [1, 2, 3, 4, 5]
var str = [String]()
str = arr.map {
if let intToStr = String?("\($0)") {
return intToStr
}
return ""
}
print("\(str)")
arr 에는 정수 5개가 들어있습니다str 배열을 타입은 문자열입니다filter 는 배열에 조건을 만족하는것 들만 모아서 새로운 배열을 만듭니다
예시코드
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let result = arr.filter{ $0 % 2 == 0 }
arr 배열에는 1 부터 10 까지 정수가 들어있습니다 result 상수는 arr 배열 요소중 2로 나누었을때 나머지가 0인 요소만 저장합니다.reduce 는 컨테이너 안에 모든 요소를 결합하면 배출하는 고차함수 입니다
예시코드
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let sum = arr.reduce(0) { $0 + $1 }
arr 배열안에는 1 부터 10까지 정수가 들어 있습니다sum 은 arr 배열안에 있는 모든 수를 합친 값을 저장합니다.reduce(0){ $0 + $1 } 처음에는 $0 = 입니다 왜냐하면 reduce(0) 값의 0이라는 값이 있기 때문입니다. $1 은 에는 1이 들어갑니다 왜냐면 arr 의 첫번째 값은 1이기 때문입니다 $1 에 있던 값은 다시 $0 으로 되돌아갑니다 $1 의 데이터는 2가 됩니다 위에 동작들은 10이 배열에 모든 값들이 더해지면 끝납니다