如何在Kotlin中定义并设置私有可变属性tempUnitType,其初始值根据key变量来决定?
时间: 2024-10-24 07:12:04 浏览: 16
在Kotlin中,你可以通过数据类(Data Class)或者普通的类,并结合`var`关键字来定义一个私有可变属性。假设有一个键值对的数据结构`KeyVal`,我们可以这样做:
```kotlin
data class KeyVal(val key: String) {
private var tempUnitType: String
init {
tempUnitType = when (key) {
"Celsius" -> "摄氏度"
"Fahrenheit" -> "华氏度"
else -> throw IllegalArgumentException("Unsupported unit type for key $key")
}
}
// 提供getter和setter,虽然内部是private,但为了API的一致性可以提供
fun getTempUnitType(): String { return tempUnitType }
set(TempUnitType value) { tempUnitType = value } // 不推荐直接赋值,因为这是私有的
}
// 使用示例
val keyValue = KeyVal("Celsius") // tempUnitType会被初始化为"Celsius"
println(keyValue.getTempUnitType()) // 输出: 摄氏度
```
在这个例子中,`tempUnitType`的初始值根据`key`的值动态设定。注意,通常我们不会直接在外部设置`tempUnitType`,因为它已经作为数据类的一部分被初始化了。
阅读全文