gpt4 book ai didi

kotlin - 变量可以是两种不同的类型

转载 作者:行者123 更新时间:2023-12-02 12:47:35 26 4
gpt4 key购买 nike

我正在研究使用ECB贷款数据模板的用例。我遇到的问题是,变量可以是两种不同的类型。例如。字段“承保财务报表日期”可以是Date类型,也可以是NoData类型,它是一个枚举。如何在Kotlin中构建它?

我正在寻找类似的东西:

val dateOfTheFinancialStatementsAtUnderwriting: Date || NoData

包装这两种类型的自定义类是否是处理此问题的正确方法?

在此先感谢您的帮助!

最佳答案

正如@kris_k所说,您可以使用数据类型Either。如果不想添加库(箭头),则可以使用密封类自己定义它:

sealed class Either<out L, out R> {

data class Left<out L>(val a: L) : Either<L, Nothing>()

data class Right<out R>(val b: R) : Either<Nothing, R>()

val isLeft: Boolean get() = this is Left<L>
val isRight: Boolean get() = this is Right<R>
}

如何返回 Either:
class Date
class NoData

fun getDateOfTheFinancialStatementsAtUnderwriting(): Either<NoData, Date> {
if (...) {
return Either.Left(NoData())
} else {
return Either.Right(Date())
}
}

如何使用 Either:
val result: Either<NoData, Date> = getDateOfTheFinancialStatementsAtUnderwriting()

when (result) {
is Either.Left -> {
val noData: NoData = result.a
TODO()
}
is Either.Right -> {
val date: Date = result.b
TODO()
}
}

关于kotlin - 变量可以是两种不同的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53115278/

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