고차함수(swift)

이득령·2024년 6월 18일

swift

목록 보기
5/9

고차함수 map filter reduce 에 대해 알아 보겠습니다

본론에 앞서 $0 은 고차함수에서 사용되는 클로저가 처리 하고 있는 현재의 요소를 나태냈습니다

map

map 함수는 기존 컬렉션 안에 있는 데이터를 가공해서 새로운 컬렉션을 만들어줍니다

예시코드

var arr = [1, 2, 3, 4, 5]

var str = [String]()

str = arr.map {
    if let intToStr = String?("\($0)") {
        return intToStr
    }
    return ""
}
print("\(str)")
  1. arr 에는 정수 5개가 들어있습니다
  2. str 배열을 타입은 문자열입니다
  3. 배열타입안에 정수 타입 데이터를 문자열로 변경할려고 합니다.

filter

filter 는 배열에 조건을 만족하는것 들만 모아서 새로운 배열을 만듭니다

예시코드

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

let result = arr.filter{ $0 % 2 == 0 }
  1. arr 배열에는 1 부터 10 까지 정수가 들어있습니다
  2. result 상수는 arr 배열 요소중 2로 나누었을때 나머지가 0인 요소만 저장합니다.

reduce

reduce 는 컨테이너 안에 모든 요소를 결합하면 배출하는 고차함수 입니다

예시코드

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

let sum = arr.reduce(0) { $0 + $1 }
  1. arr 배열안에는 1 부터 10까지 정수가 들어 있습니다
  2. sumarr 배열안에 있는 모든 수를 합친 값을 저장합니다.
  • 설명 reduce(0){ $0 + $1 } 처음에는 $0 = 입니다 왜냐하면 reduce(0) 값의 0이라는 값이 있기 때문입니다. $1 은 에는 1이 들어갑니다 왜냐면 arr 의 첫번째 값은 1이기 때문입니다 $1 에 있던 값은 다시 $0 으로 되돌아갑니다 $1 의 데이터는 2가 됩니다 위에 동작들은 10이 배열에 모든 값들이 더해지면 끝납니다
profile
프로그래머 아님

0개의 댓글