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

标签 android generics 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")
            }
        }
    }
}

最佳答案

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

complete(Result.success(Unit))

关于android - 具有泛型和 Void/Nothing 返回类型的 Kotlin 结果类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57395009/

相关文章:

java - 为什么 Java 枚举文字不能具有泛型类型参数?

c# - 使用泛型重构

android - 在 kotlin 文件中找不到可绘制对象

android - 导航架构组件 - 未生成 DestinationFragmentArgs

java - 从 android Activity 中停止媒体播放器(从广播接收器启动)

java - 播放期间SeekBar有点生涩

android - 我的应用使用旧版YouTube播放器的外观,而示例应用使用新外观

android - GCM 不同的发件人 ID 且发件人 ID 不匹配错误

java - 为什么 Java(但不是 .NET)无法在不需要原始类型/类型删除的情况下适应泛型?

android - 将背景图像添加到随滚动移动的 RecyclerView