개발하자 중엽아
  • [Swift] 고차함수
    2023년 06월 11일 13시 15분 45초에 업로드 된 글입니다.
    작성자: 이중엽

    1. 개요

    고차함수의 종류와 사용 방법

     

    Swift에서 함수는 일급객체로 취급하여 다른 함수를 다른 함수의 전달인자로 사용 가능

    이때 매개변수로 함수를 갖는 함수가 고차함수

     

    대표적인 고차함수

    • map
    • filter
    • reduce

    2. map

    1. 매개변수로 전달된 함수를 실행

    2. 함수로 인하여 변형된 결과를 반환

     

    적용 가능 타입

    배열, 딕셔너리, 세트, 옵셔널

     

    컨테이너가 담고 있는 각 원소의 값을 매개변수를 통해 받은 함수에 적용한 후, 다시 컨테이너에 포장하여 반환

    let numbers = [1,2,3,4,5]
    
    // 후행 클로저
    // 매개변수(클로저) : (number: Int) -> Int
    let doubleNumbers1 = numbers.map() { (number: Int) -> Int in
        return number * 2
    }
    
    // 경량 문법
    let doubleNumbers2 = numbers.map { $0 * 2 }

     

    3. filter

    1. 매개변수로 전달된 함수를 실행

    2. 조건에 일치하는 원소만을 기존 순서에 맞게 변환

     

    적용 가능 타입

    배열, 딕셔너리, 세트, 옵셔널

     

    컨테이너가 담고 있는 각 원소의 값 중 조건과 일치하는 원소만을 새로운 컨테이너에 기준 순서에 맞게 반환

    let numbers = [1,2,3,4,5]
    
    // 후행 클로저
    // 매개변수(클로저) : (number: Int) -> Bool
    let evenNumbers1 = numbers.filter() { (number: Int) -> Bool in
        return number % 2 == 0
    }
    //결과 -> evenNumbers1 = [2,4]
    
    //경량 문법
    let evenNumbers2 = numbers.map{ $0 % 2 == 0 }

     

    4. reduce

    사실상 결합의 기능으로 사용

     

    적용 가능 타입

    배열, 딕셔너리, 세트, 옵셔널

     

    컨테이너가 담고 있는 원소를 차례대로 연산하여 나온 값을 다음 원소와 다시 연산하는 과정을 거친 후 최종 결과를 반환

    let numbers = [1,2,3,4,5]
    
    // 후행 클로저
    // 매개변수(클로저) : (number: Int) -> Bool
    let sum = numbers.reduce(0, { (result: Int, next: Int) -> Int in
        return result + next
    }
    //sum = 15
    
    let doubleNumbers = numbers.reduce(0) { $0 + $1 }

    초기값 : 0
    result : result / $0
    next : next / $1

     

    위 식을 해석하면 초기값은 0이며, 이 초기값은 result의 초기값이 되기도 한다.
    이 후 원소를 차례대로 연산( + )하여 나온 값을 result에 저장한다.
    결과적으로 result에는 값이 누적되고 next는 다음 원소를 가리킨다.

    'Swift' 카테고리의 다른 글

    [Swift] View Life Cycle  (0) 2023.06.11
    [Swift] App Life Cycle  (0) 2023.06.11
    [Swift] 값타입과 참조타입 차이점  (2) 2022.08.17
    댓글