Clousure 설명 초기에

5_01_Closure_Step1 09:30 입니다.

무슨 설명을 하시고자 하는지 영상을 보면 맥락은 이해가 가지만
예제는 혹시 조금 잘 못된 거 아닌가 해서요…?

코드만 봤을 때
addVAT()를 직접 호출해서 사용하지 않고
finalPrice()를 호출해서 사용한 예제는 잘 못 된 건 아닐까 해서요…

"정보와 일(function-1)"을 같이 넘겼고 결과로 정보만 받는데
그 함수 결과로 넘겨 준 일(function-1)의 결과를 다른 작업하지 않고 받을거라면
정보를 일(function-1)에 넣어서 실행한 결과와 같은데 굳이 왜 그렇게 처리한 걸까요…?

예를 들어 코드가 아래와 같다면 완벽히 이해가 갑니다.

func finalPrice(source:Double, additional:(Double) → Double) → Double {
let price = additional(source)
let halfprice = price / 2
return halfprice
}

혹시 제가 맥락을 이해 못 했나요?

좋아요 1

흠… 제 생각에는 '같은 결과’가 나온다는 것이 예제의 포인트인 것 같습니다. (앞으로 이걸 활용하는 것은 저희의 소관이지만…)
강의의 맥락은 "클로저는 first class로서 함수의 매개변수로 받을 수 있다"는 것을 증명하는 과정이었고, 그 결과값이 동일하다는 걸 보여줌을 통해 앞선 논지가 유효하다는 것을 보여주는 것이지 않을까요? 적어주신 코드처럼 활용하는건 앞으로 저희이 몫이 아닐까… 짧은 소견을 나눕니다:)

좋아요 1

결과를 다른 작업하지 않고 받을거라면

네, 예제를 극도로 단순화 하다보니 저렇게 의미 없는 작업을 하네요.

“additional 이라는 함수와 source 라는 매개변수를 받아서
단지 additional 에 source를 넣은 결과를 리턴하는 거라면 애초에 그냥 호출하면 되는 것 아니냐?”
말씀이죠?

네, 저 구문만으로 하면 의미 없는 코드인데요,
만약 매개변수가 2개라서 상황에 따라 하나의 매개변수를 선택해야 한다던지
2개의 매개변수에 어떤 연산을 해서 하나의 매개변수를 넘기는 등의 작업을 한다면
의미가 있겠지만 함수타입을 처음 익히는 단계에서 최대한 간단한 구현을 예로 들고자 했습니다.