관리 메뉴

사과하는 제라스

[Swift 문법] 고차함수 with 클로저 본문

제라스의 Swift 공부/Swift 문법

[Swift 문법] 고차함수 with 클로저

Xerath(제라스) 2023. 8. 18. 10:25

목차

    728x90
    반응형

    고차함수가 뭘까?

     

    일단, 고차함수는 다른 함수를 매개변수로 받거나 함수 실행의 결과를 함수로 반환하는 함수다.

     

    코드를 한번 보자.

    // 이런 함수가 있다고 하자.
    func getName(_ name: String) -> String {
        return "내 이름은 \(name)"
    }
    
    // 이 함수를 클로저 형태로 보면 이런 식으로 될 것이다.
    var getNameClosure : (String) -> String
    
    // sayHello라는 함수를 만들고 해당 함수에는 매개변수로 클로저를 두자. 여기에는 나중에 getName이란 함수를 넣어볼 거다.
    func sayHello( getName: (String) -> String, name: String) -> String {
        return getName(name)
    }
    
    // getName 매개변수에 getName함수를 넣는다.
    let resultOne = sayHello(getName: getName, name: "제라스")
    
    // getName 함수는 위처럼 해도 되고, 이렇게 매개변수를 비워놔도 된다.
    let resultOne = sayHello(getName: getName(_:), name: "제라스")

     

     

    이런 식으로 하는건데,

     

    Swift 표준 라이브러리에는 주로 3가지의 고차함수를 많이 쓴다.

    1. map: 주어진 배열 원소들에 각각 적용함.

    2. filter: 주어진 배열 중 조건에 맞는 것만 추출함.

    3. reduce : 주어진 배열을 모두 더함.

     

    다른 것 중엔 sort, sorted도 있다.

    1. sort: 해당 배열을 정렬함.

    2. sorted: 해당 배열을 정렬했을 때의 배열을 리턴함.

    arr = [1,2,3,4,5]
    
    // 오름차순 sort
    arr.sort()
    
    // 오름차순 sorted
    arr.sort(by: >)
    
    // 내림차순 sort
    var sortedArr = arr.sorted()
    
    // 내림차순 sorted
    var descendingSortedArr = arr.sorted(by: >)
    728x90
    반응형