为何不能将“kotlin.Result”用作返回类型?


Result 是 Kotlin 中的一个可序列化类。它的函数定义如下 −

class Result<out T> : Serializable

此类有两个属性 − “isFailure”“isSuccess”

根据文档说明,Result<T> 不能用作 Kotlin 函数的直接返回类型。但是,在本文中,我们将演示如何在 Kotlin 程序中使用这个 Result

// ERROR: 'kotlin.Result' cannot be used as a return type
fun findUserByName(name: String): Result<User>
fun foo(): Result<List<Int>>      // ERROR
fun foo(): Result<Int>?          // ERROR
var foo: Result<Int>             // ERROR

示例 – Kotlin.Result

sealed class myInterFace<out Success, out Failure>

data class Success<out Success>(val value: Success) : myInterFace<Success, Nothing>()
data class Failure<out Failure>(val reason: Failure) : myInterFace<Nothing, Failure>()

fun myMethod(string : String) : myInterFace<String, Exception> {
   return if (string.isEmpty()) {
      Failure(Exception("Error in the process"))
   } else {
      Success(string)
   }
}

fun main(args : Array<String>) {
   when(val result = myMethod("")) {
      is Success -> println(result.value)
      is Failure -> println(result.reason)
   }
}

输出

执行后,将产生以下输出 −

java.lang.Exception: Error in the process

更新时间:2022-3-1

1 千多浏览量

开启你的职业生涯

通过完成课程获得认证

开始
广告