고차함수 7:43분 관련 질문입니다.
234
작성한 질문수 5
고차함수는 함수를 인수로 받는 함수라고 이해했어요.
그런데, 7:43정도에 나오는 highPrintTest(::printTest)
에서 고차함수는 "결과 등을 리턴하는 함수"를 인수로 가지는 함수이기에, ::printTest 이 부분은 printTest함수의 결과값이 들어가야 하지 않나요? 그런데, 지금 printTest말고는 인수를 안 태웠기 때문에, printTest(str:String)함수에는 변수의 타입이 안 맞으니 못 들어가서 타입 에러가 나와야 하지 않나요?
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
고차함수는 맞게 이해하셨습니다. 함수를 인수로 받는 함수라고 할 수 있습니다.
highPrintTest(::printTest)에서 ::printTest는 함수 그 자체를 의미하는데, 이 함수는 String 타입의 인수를 받아 println을 출력하는 함수입니다. 그리고 highPrintTest 함수에서는 이 함수를 3번 실행하고, 그 결과 값인 Unit을 리턴합니다.
따라서 highPrintTest(::printTest)에서 ::printTest는 함수 자체를 인수로 받게 되고, 함수의 결과값이 들어가는 것이 아닙니다. 또한, highPrintTest 함수에서는 printTest(String) 함수를 호출하지 않기 때문에, 타입 에러가 발생하지 않습니다.
아마도 ::printTest와 같이 함수만 전달하면, 함수가 실행되면서 함수 내부에서 printTest 함수를 호출하여 결과 값을 도출하는 식으로 동작하는 것이 일반적으로 사용되는 방법입니다.
위 내용으로도 이해가 어려운 부분이 있다면, 질문을 보다 구체적으로 설명해 주시면 더 정확한 답변을 드릴 수 있을 것 같습니다. 감사합니다.
0
highPrintTest(::printTest)를 했을때 어떤 함수가, 어떤 순서로 호출되는지 순서도를 알려주시면 안 될까요? 이렇게 매우 친절한 답변에도 불구하고 고차함수 자체가 어려워서 좀 난해하네요.
코트린 심화 학습
0
42
2
마지막에서 Int = 20의 의미
0
49
1
키보드관련 문제
0
142
1
인터페이스에 대한 질문입니다
0
252
1
질문
1
198
1
9:20초 쯤 나오는 init은 클래스안에서 공통으로 쓰이는 건가요?
0
291
1
int, string?
0
271
2
when 버전으로도 알려주세요!
0
222
1
for 문 밖에서의 list 타입의 차이점
0
259
2
Object
0
281
1
작은 값 찾기, 이렇게는 왜 안 되나요?
0
430
1
알파벳 숫자 세기, mutableMap value 값 변경
0
432
1
kotlin enum class
0
376
1
fun query(request: String) ="결과 query $request"질문입니다.
0
294
1
코틀린은 map int 밸류값에 ++ 안 되나요?
0
447
2
Unit
0
334
1
Bike() 클래스 와 Bike 클래스의 차이
0
293
1
새로운 변수를 만드는 것이 좋나요?
0
243
1
it 이 정확히 무엇인가요?
0
367
1
ArrayList와 mutableListOf의 차이점
0
1088
1
데이터 타입 Int, Long 에 대한 커버 가능 범위 참고 링크
0
310
1
ArrayList랑 mutableListOf가 차이점이 있나요?
0
376
1
수업자료는 어디서 볼 수있나요~
0
612
1
val mutableListOf
2
326
1







