본문 바로가기

개발 중얼거림

[Kotlin] invoke란?

https://velog.io/@cgw0519/Kotlin-invoke-%ED%95%A8%EC%88%98%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C

 

[Kotlin] invoke 함수는 무엇일까 ?

코틀린 기본 개념을 한 번 쭉 정리하고 싶어서 부스트코스 - 코틀린 프로그래밍 강의를 쭉 듣고 있다. 이제 함수형 프로그래밍과 관련된 내용까지 수강하였는데, 그 과정에서 invoke 함수에 대해

velog.io

[ 여긴 믿을 곳이 아닙니다]

간략한 정리

이름없이 호출한다?

내가 헷갈린 점

invoke가 뭐야...? 그냥 함수면 붙이면 돼??

=> 안됨!!

 

  • 일반 함수와 invoke:
    • sum은 일반적인 함수입니다.
    • 일반 함수는 직접 invoke를 사용할 수 없습니다.
  • invoke 사용 가능한 경우:
    • 람다 표현식
    • 함수형 인터페이스의 인스턴스
    • invoke 연산자가 정의된 클래스의 인스턴스
    • 함수 참조를 사용했을 때

 

private fun sum(a: Int, b: Int): Int = a + b
println(sum(20,30))
//println(sum.invoke(20,30)) // 람다가 아니라서 invoke는 못 쓴다
println(::sum.invoke(20,30)) // 함수 참조를 통해 invoke 사용

람다식이라면? 된다

val sumLambda = { a: Int, b: Int -> a + b }
println(sumLambda.invoke(20, 30))

'개발 중얼거림' 카테고리의 다른 글

Kotlin 에서 SQLite 쓰기...  (2) 2024.09.02
[Kotlin] 표준 함수 apply와 also의 차이점  (1) 2024.08.29
[Kotlin] Function Reference(::)  (0) 2024.08.29
[Kotlin] Sealed class vs Enum  (0) 2024.08.29