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

UrK*_*UrK 3 generics android kotlin

我正在尝试使用 Kotlin 的[Result][1]类型。虽然在成功的情况下它不会返回任何值。我无法让它返回值。以下行给我带来了麻烦:complete(Result.success()). 它不编译。我尝试了两者Result<Void>Result<Nothing>但无法使其正常工作。

有关如何使其工作的任何建议?

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")
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

And*_*ana 5

你必须使用Result<Unit>. 然后你可以这样调用complete

complete(Result.success(Unit))
Run Code Online (Sandbox Code Playgroud)