gpt4 book ai didi

swift - Kotlin 有像 Swift 这样的 Result 类型吗

转载 作者:搜寻专家 更新时间:2023-11-01 05:48:15 24 4
gpt4 key购买 nike

Swift 有一个这样声明的Result 类型

enum Result<Success, Failure: Error> {
case success(Success)
case failure(Failure)
}

可以这样使用:

enum FooError: Error {
case fizzReason
case barReason
case bazReason
}

func returnResult() -> Result<String, FooError> {
// ... Just imagine this method returns an error
}

switch returnResult() {
case .success(let string):
print(s)
case .failure(.fizzReason):
// do something
case .failure(.barReason):
// do something
case .failure(.bazReason):
// do something
}

Kotlin 是否有类似的数据类型可以以相同的方式使用?

最佳答案

我不知道 Kotlin 是否有类似的东西,但这里有一个应该做同样事情的实现:

sealed class Result<out Success, out Failure>

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

实例:

fun echoString(string : String) : Result<String, Exception> {
return if (string.isEmpty()) {
Failure(Exception("Error"))
} else {
Success(string)
}
}

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

关于swift - Kotlin 有像 Swift 这样的 Result 类型吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56900407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com