Инициализировать класс функциями более высокого порядка в котлине

Функции высшего порядка в Котлине:

У меня есть класс, который принимает функции более высокого порядка:

data class Data(id: String)

class MyClass(
    private val getData: (find1: (String) -> Data?, find2: (String) -> Data?) -> (Request) -> Either<HttpError, Data>
) 

Я определил функцию getData внутри объекта.



object Data
{
  fun getData(find1: (String) -> Data?, find2: (String) -> Data?): (Request) -> Either<HttpError, Data> = {...}
}

Теперь я не могу понять, как инициализировать класс?


 val obj = MyClass(
            getData = {Data.getData  ??? }
    )

Как вызвать эту функцию из класса MyClass:

репо.кт

override fun find1(value: String): Data? {
}

repo1.kt

override fun find1(value: String): Data? {
}

class MyClass(repo: Repo, repo1: Repo1, private val getData: (find1: (String) -> Data?, find2: (String) -> Data?) -> (Request) -> Either<HttpError, Data>)
{
    getData { id -> repo.find1(id) ?????}(request)
}

1 ответ

Решение

Используйте ссылку на функцию-член: https://kotlinlang.org/docs/tutorials/kotlin-for-py/member-references-and-reflection.html

val obj = MyClass(getData = Data::getData)
Другие вопросы по тегам