작성
·
187
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
고차함수는 맞게 이해하셨습니다. 함수를 인수로 받는 함수라고 할 수 있습니다.
highPrintTest(::printTest)에서 ::printTest는 함수 그 자체를 의미하는데, 이 함수는 String 타입의 인수를 받아 println을 출력하는 함수입니다. 그리고 highPrintTest 함수에서는 이 함수를 3번 실행하고, 그 결과 값인 Unit을 리턴합니다.
따라서 highPrintTest(::printTest)에서 ::printTest는 함수 자체를 인수로 받게 되고, 함수의 결과값이 들어가는 것이 아닙니다. 또한, highPrintTest 함수에서는 printTest(String) 함수를 호출하지 않기 때문에, 타입 에러가 발생하지 않습니다.
아마도 ::printTest와 같이 함수만 전달하면, 함수가 실행되면서 함수 내부에서 printTest 함수를 호출하여 결과 값을 도출하는 식으로 동작하는 것이 일반적으로 사용되는 방법입니다.
위 내용으로도 이해가 어려운 부분이 있다면, 질문을 보다 구체적으로 설명해 주시면 더 정확한 답변을 드릴 수 있을 것 같습니다. 감사합니다.
highPrintTest(::printTest)를 했을때 어떤 함수가, 어떤 순서로 호출되는지 순서도를 알려주시면 안 될까요? 이렇게 매우 친절한 답변에도 불구하고 고차함수 자체가 어려워서 좀 난해하네요.