Kotlin
operator fun invoke
God.Joy
2023. 4. 10. 22:28
안드로이드에서 클린아키텍처를 적용할 때 UseCase를 만드는데 다음과 같은 형식으로 작성하는걸 많이 봤다.
class GetSomething @Inject constructor(private val repository: Repository) {
operator fun invoke(val param: String) = repository.getSomething(param)
}
코틀린 공부하다보니 여기에 숨겨진 비밀을 알게됐다.
A value of a function type can be invoked by using its invoke(...) operator: f.invoke(x) or just f(x).
즉 GetSomething.invoke(param)이 GetSomething(param) 이런식으로 사용이 가능하다.
invoke 연산자를 operator 키워드를 통해 오버로딩하면 함수를 이름 없이 사용할 수 있게 되는 것이다.
와우ㅎ 이렇게 멋진 기능이 있었다니 게을렀던 나는 2% 손해보고 살았다. ->앞으로 2% 더 효율적으로 산다 👍
의미를 모르는 코드를 쓸 때는 항상 알아보고 사용하자고 되새기게 되었다.