안드로이드에서 클린아키텍처를 적용할 때 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% 더 효율적으로 산다 👍
의미를 모르는 코드를 쓸 때는 항상 알아보고 사용하자고 되새기게 되었다.
'Kotlin' 카테고리의 다른 글
Inner class 와 Nested Class 차이 (0) | 2023.04.18 |
---|---|
Flow 결합 연산자 : zip, combine (0) | 2023.04.11 |
정렬 (0) | 2023.01.09 |
코루틴 1 (0) | 2022.05.12 |
[Kotlin In Action] 위임 (0) | 2022.03.30 |