Android 具有泛型和Void/Nothing返回类型的Kotlin结果类型

Android 具有泛型和Void/Nothing返回类型的Kotlin结果类型,android,generics,kotlin,Android,Generics,Kotlin,我正在尝试使用Kotlin的[Result][1]类型。虽然在成功的情况下,它不会返回任何值。我无法让它返回值。下面这行给我带来了麻烦:complete(Result.success())。它不编译。我尝试了Result和Result两种方法,但都没有成功 关于如何让它工作有什么建议吗 package me.test.app import android.util.Log class Test { fun foo(complete: (Result<Nothing>)

我正在尝试使用Kotlin的
[Result][1]
类型。虽然在成功的情况下,它不会返回任何值。我无法让它返回值。下面这行给我带来了麻烦:
complete(Result.success())
。它不编译。我尝试了
Result
Result
两种方法,但都没有成功

关于如何让它工作有什么建议吗

package me.test.app

import android.util.Log

class Test {

    fun foo(complete: (Result<Nothing>) -> Unit) {
        if (Math.random() > 0.5) {
            complete(Result.success())
        } else {
            complete(Result.failure(Throwable("too low")))
        }
    }

    fun bar() {
        foo { result ->
            result.fold({
                Log.i("APP", "Success")
            })
            {
                Log.i("APP", "Failure")
            }
        }
    }
}
package me.test.app
导入android.util.Log
课堂测试{
fun foo(完成:(结果)->单位){
if(Math.random()>0.5){
完成(Result.success())
}否则{
完成(结果失败(可丢弃(“过低”))
}
}
趣味酒吧(){
foo{结果->
结果:折叠({
Log.i(“应用程序”、“成功”)
})
{
Log.i(“应用程序”、“失败”)
}
}
}
}

您必须使用
结果
。然后您可以这样调用
complete

complete(Result.success(Unit))

另一个选项可能是使用
Nothing?
Void?
作为类型,并使用
Result.success(null)
完成它。尽管这取决于偏好,使用单位在我看来更干净