使用Kotlin中的高阶函数初始化类

问题描述

科特林的高阶函数

我有一个使用wto高阶函数的类:

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调用函数

repo.kt

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?,Data>)
{
    getData { id -> repo.find1(id) ?????}(request)
}

解决方法

使用成员函数参考:https://kotlinlang.org/docs/tutorials/kotlin-for-py/member-references-and-reflection.html

val obj = MyClass(getData = Data::getData)