Programming/Mac & iOS

[Swift] 알면 좋은 Array에서 제공하는 함수 (map, filter, reduce)

MB Kyle KWON 2014. 9. 12. 15:21

Map

map은 각 element를 순회하면서 element를 수정할 때 사용하기 좋은 함수이다. 예를 들어 우리는 각 String에 "box"라는 String을 덧붙이기 위하여 for-in을 떠올리기 쉽다.


ex) 

for string in strArray {

string += "box"

}


대신에 map 함수를 사용하면 한줄로 간단하게 작성할 수 있다.


ex)

var resultArray = strArray.map({$0+"box"})


참고로 map의 param 함수 타입은 '(T) -> U'이다. map 함수는 Array의 각 element를 순회하면서 개발자가 정의한 동작을 수행하게 된다.


Filter

filter는 말 그대로 특정 조건을 통과한 element들을 모아서 Array로 반환하는 함수 이다. filter의 param 함수 타입은 '(T) -> Bool'이다. 작성하면 아래와 같다.


ex)

var filteredArray = moneyArray.filter({$0<1_000})


Reduce

reduce는 element들을 하나의 value로 통합하는 함수이다. reduce의 함수 원형은 'func reduce<U>(initial: U, combine: (U, T) -> U) -> U'이다. 이를 이용하여 작성하면 아래와 같다.


ex)

var sum = moneyArray.reduce(0, combine: +)


moneyArray의 element는 Integer로 각 element의 합을 구하는 것이다. 혹은 아래와 같이 String을 reduce할 경우, element들을 하나의 String으로 통합할 수도 있다.


ex)

var aString = resultArray.reduce("", combine: {$0+$1 + "!! "})