1. 함수는 무엇인가요?
기본적으로 Input 값이 있고 연산 후 Output이 있는 것을 함수라고 합니다.
//두개의 Input값을 받아 더한 값을 Output값을 리턴 하는 함수
func addNumber(n1: Int, n2: Int) -> Int {
return n1 + n2
}
추가로, Output 값만 있는 함수는 Generator, Input 값만 있는 함수는 Consumer 라고 부릅니다.
2. 고차함수는 무엇인가요?
다른 함수를 전달인자로 받거나 함수 실행 결과를 함수로 리턴하는 함수를 고차함수라고 합니다.
//실행 결과를 inc 함수로 리턴하는 makeInc 고차함수
func makeInc(_ n: Int) -> (Int) -> Int {
func inc(_ x: Int) -> Int {
return n + x
}
return inc
}
3. 그럼 클로저는 함수와 어떤 차이가 있나요?
위에 예제로 봤던 고차함수를 아래와 같이 실행시켜봅시다.
let f = makeInc(10)
f(5) // 15
위 코드대로 실행하면 결과 값이 15 가 나옵니다.
두번 줄에서 f는 10이라는 값이 매개변수로 전달되지 않았지만, 첫번째 줄에서 f는 생성 될때 10이라는 state를 점유하고 있습니다.
이러한 state 값을 점유하고 있는 함수를 클로저라고 합니다.
즉, 클로저 역시 함수지만, 함수가 생성될 때 state를 점유하고 있다면 우리는 그것을 클로저라고 합니다.
"Closures are also functions. But when a function captures state upon its creation, we call it a closure."
참고링크
'Programer > iOS' 카테고리의 다른 글
[Swift] StoryBoard 로컬라이즈(지역화) 쉽게하기 (0) | 2018.08.24 |
---|---|
[FP] Imperative -> Declarative 예제를 통해 바꿔보기 (FizzBuzz) (0) | 2018.07.16 |
[FP] Functional Programing 용어 정리 (0) | 2018.07.10 |
[Swift] Class와 Struct 무엇을 써야 할까요? (Class VS Struct) (0) | 2018.07.05 |
[Tip] iOS 세미나, 밋업 정보 (0) | 2018.06.04 |