본문 바로가기

교육/Swift

[swift] 함수형 프로그래밍, 커링 기법

import Foundation

/**

 func1 출력하는 함수

 */

func func1() {

    print("func1")

}

/**

 func2 출력하는 함수

 */

func func2() {

    print("func2")

}

/**

 func1,2 실행하는 함수

 */

func excuteAll() {

    func1()

    func2()

}

/**

 전달받은 함수들을 전부 실행하는 함수

 함수형 프로그램 패러다임 안에서는

 함수 역시 객체임으로

 전달인자 또는 반환값으로 사용 가능

 */

func excute(tasks:[()->Void]) {

    for task in tasks {

        task()

    }

}

excuteAll()

excute(tasks: [func1,func2])

/**

 두 수의 합을 구하는 함수

 - parameter first : 첫번째 수

 - parameter second : 두번째 수

 - returns : Int : 두 수의 합

 */

func sum(first:Int, second:Int) ->Int {

    return first+second

}

print(sum(first: 1, second: 2))

/**

 두 수의 합을 구하는 함수

 (커링기법 : 여러개의 매개변수를 갖는 함수를 매개변수 하나를 갖는 함수의 나열로 표현)

 - parameter first : 첫번째 수

 - returns : ((Int)->Int) : (매개변수)와 first의 합을 반환

 */

func sum2(first:Int)->((Int) ->Int) {

    return {second in first + second}

}

print(sum2(first: 1)(2))


'교육 > Swift' 카테고리의 다른 글

[swift] nil 체크  (0) 2018.07.05
[swift] 접근자  (0) 2016.08.22
[swift] selector  (0) 2016.08.22
[swift] guard  (0) 2016.08.22
[swift] exception  (0) 2016.08.22