為何不能將“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 千多瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.