gpt4 book ai didi

kotlin - Kotlin-初始化时转换值(value)

转载 作者:行者123 更新时间:2023-12-02 13:23:36 25 4
gpt4 key购买 nike

我是Kotlin的新手,我想知道我们是否可以在初始化时转换内容值:例如:

@Document
data class Category(
@Id val id: Id? = null,
val label: String
)

类别是一个文档(mongodb的实体),当我实例化该对象时,我想将标签属性转换为大写形式。我该怎么做才能保持对语言的习惯?关键是保留 val关键字的不变属性。
val categ = Category(label = "Test")
println(categ.label) // --> TEST

谢谢。

最佳答案

您可以将“upperCasing”封装到工厂中:

data class Category constructor(val label: String) {

init {
if (label != label.toUpperCase()) {
throw IllegalStateException("Label must be uppercase")
}
}

companion object {
fun createInstance(str: String) = Category(str.toUpperCase())
}

}
init块确保客户端不会创建带有非上标签(应记录在案)的不需要的实例。

创建一个这样的实例:
val instance = Category.createInstance("xy")
您可能希望通过相应地命名工厂来明确指出如果参数还不是大写字母,请进行转换。 withTransformedLabel或仅添加一些文档;-)

关于kotlin - Kotlin-初始化时转换值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47648925/

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