안드로이드/기능구현

Kotlin invoke의 개념과 사용법 그리고 예시

Kotlin invoke의 개념과 사용법 그리고 예시
Kotlin에는 invoke 라는 명칭의 연산자가 존재합니다.
invoke 연산자는 이름 없이 호출될 수 있습니다. (lambda..!?)
Sample Code를 통해 더 쉽게 알아보겠습니다.

InvokeTest 클래스를 생성해 인자로 Hello ~ 를 넣었을 뿐인데 결과처럼 출력이 되었습니다.
test.invoke(”Hello ~”) 형태로 호출하는 것 아닌가 싶지만 invoke 연산자는 이름 없이 호출될 수 있기에 이런 형태가 가능합니다.
코드에서 확인할 수 있듯 invoke는 kotlin에서 연산자로 제공하고 있습니다. 이런 연산자에는 +, -, *, invoke 등이 존재하며 필요에 따라 간단한 키워드로 사용할 수 있습니다.

위 코드에선 따로 Invoke를 호출하지 않아도 invoke 내부의 함수가 호출이 됩니다.
Kotlin이 간단한 코드를 지향하기 때문에 invoke가 등장한게 아닐까 생각해 봅니다.
위의 코드를 활용하면 invoke를 Listener로 사용할 수도 있습니다.

 

handlerTest라는 함수를 만들었습니다.
request: String 형태의 인자를 받으며 handler로 lambda 형태의 함수를 지니고 있습니다.
이 handler는 response를 invoke할 때 사용해줄 것입니다.

main() 에서 handlerTest 함수를 호출하며 적절한 인자를 넣어주면, handlerTest 함수에서 request에 따라 handler에 적절한 response를 invoke를 통해 응답해줄 수 있습니다.

저는 2가지 방법으로 이 형식을 사용했습니다.

1. handlerTest(인자) { lambda를 통해 invoke 구현 }
2. handlerTest(인자, invoke listener) 를 통한 구현

두 가지 방법이 있으니 취향에 맞춰 구현할 수 있습니다 😊

이 Invoke를 통해 실무에서도 유용하게 사용할 수 있습니다.
예를 들어 어떤 화면이 열리고 확인, 취소에 따라 각각 응답을 해줘야하는 경우에

확인, 취소가 있는 Dialog에 lambda 형태의 Listener를 구현하고 invoke를 통해 알리면 확인, 취소 각각에 대응을 할 수 있는 것입니다.

그림의 Dialog에서 확인, 취소 버튼에 각각 Listener를 lambda 형태로 달아주고

invoke를 통해 해당 다이얼로그를 생성한 곳에 보내주면 확인, 취소에 따라 대응을 할 수 있습니다.