gpt4 book ai didi

Kotlin 数据类属性 : Multiple types

转载 作者:行者123 更新时间:2023-12-05 00:51:45 25 4
gpt4 key购买 nike

在 Kotlin 中,数据类的属性可以有多种类型吗?例如:

val CurrentValue: Double?|String或者val CurrentValue: 字符串|数组?

我在文档中找不到它。

最佳答案

联合类型在 Kotlin 中不是一个东西。

您可以改用密封类

sealed class CurrentValue<T>(val value: T) {
class TextualValue(value: String) : CurrentValue<String>(value)
class NumericValue(value: Double) : CurrentValue<Double>(value)
}

然后您可以使用详尽的 when 表达式(类似于其他语言中的 switch)以便以类型安全的方式访问值:

fun doSomething(value: CurrentValue<*>) {

when(value) {
is TextualValue -> value.value // is recognised as a String
is NumericValue -> value.value // is recognised as a Double
}

}

如果创建类型对您来说太过分了,那么您可以执行 when 语句并根据其类型处理参数并可能对其进行规范化:

fun parseValue(value: Any?): Double? = when(value){
is Double -> value
is String -> value.toDoubleOrNull()
is Int -> value.toDouble()
else -> null
}

关于Kotlin 数据类属性 : Multiple types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71258719/

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