inflearn logo
강의

Course

Instructor

[Introductory] Kotlin Syntax for Android

High-order Function

고차함수 7:43분 관련 질문입니다.

234

Seongjin Lee

5 asked

1

고차함수는 함수를 인수로 받는 함수라고 이해했어요.

그런데, 7:43정도에 나오는 highPrintTest(::printTest)

에서 고차함수는 "결과 등을 리턴하는 함수"를 인수로 가지는 함수이기에, ::printTest 이 부분은 printTest함수의 결과값이 들어가야 하지 않나요? 그런데, 지금 printTest말고는 인수를 안 태웠기 때문에, printTest(str:String)함수에는 변수의 타입이 안 맞으니 못 들어가서 타입 에러가 나와야 하지 않나요?

kotlin 코딩-테스트

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴이에요.

고차함수는 맞게 이해하셨습니다. 함수를 인수로 받는 함수라고 할 수 있습니다.

highPrintTest(::printTest)에서 ::printTest는 함수 그 자체를 의미하는데, 이 함수는 String 타입의 인수를 받아 println을 출력하는 함수입니다. 그리고 highPrintTest 함수에서는 이 함수를 3번 실행하고, 그 결과 값인 Unit을 리턴합니다.

따라서 highPrintTest(::printTest)에서 ::printTest는 함수 자체를 인수로 받게 되고, 함수의 결과값이 들어가는 것이 아닙니다. 또한, highPrintTest 함수에서는 printTest(String) 함수를 호출하지 않기 때문에, 타입 에러가 발생하지 않습니다.

아마도 ::printTest와 같이 함수만 전달하면, 함수가 실행되면서 함수 내부에서 printTest 함수를 호출하여 결과 값을 도출하는 식으로 동작하는 것이 일반적으로 사용되는 방법입니다.

위 내용으로도 이해가 어려운 부분이 있다면, 질문을 보다 구체적으로 설명해 주시면 더 정확한 답변을 드릴 수 있을 것 같습니다. 감사합니다.

0

Seongjin Lee

highPrintTest(::printTest)를 했을때 어떤 함수가, 어떤 순서로 호출되는지 순서도를 알려주시면 안 될까요? 이렇게 매우 친절한 답변에도 불구하고 고차함수 자체가 어려워서 좀 난해하네요.

 

1

bokchi

imageimage

위의 코드와 같이 간단하게 디버깅해보셔도 좋습니다 :)

코트린 심화 학습

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

448

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