如何增加 Kotlin 数据中的整数字段 Class
How to increment an Integer field in a Kotlin Data Class
我有一个数据Class:
data class MyAlarmStatus(
val notifyTimes: Int
)
我想做什么 调用此数据 class 同时 递增 整数字段:
val myAlarmStatus = MyAlarmStatus(
notifyTimes++
)
但是,由于此字段上存在 未解析的引用,因此无法编译。有人知道如何实现这一目标吗?
可能你应该在数据 class 中初始化默认值。
之后尝试两种方式:
- 创建 MyAlarmStatus 对象并尝试此对象 val myAlarmStatus =
MyAlarmStatus(0) 和 myAlarmStatus.notifyTimes =+1
- 然后按照你写的尝试,设置默认值。
如果您希望能够创建 class 现有实例的增量版本,您可以为其提供一个运算符函数:
data class MyAlarmStatus(
val notifyTimes: Int
) {
operator fun inc() = MyAlarmStatus(notifyTimes + 1)
}
//Usage:
var alarmStatus = MyAlarmStatus(1)
alarmStatus++ //Instantiates new instance with incremented property value and assigns it to the var
如果你想在实例化其中一个时增加一些以前使用的值,你需要将它作为一个单独的 属性。
var lastNotifyTimes = 0
var alarmStatus = MyAlarmStatus(++lastNotifyTimes)
如果我们检查这个表达式
val myAlarmStatus = MyAlarmStatus(
notifyTimes++
)
我们需要 notifyTimes
变量,它应该在此范围内可以访问。
当我读到这里时,copy
函数是我首先想到的。因为是数据 class:
var alarmStatus = alarmStatus.let{ old -> it.copy(notifyTimes= old.notifyTimes+1) }
我有一个数据Class:
data class MyAlarmStatus(
val notifyTimes: Int
)
我想做什么 调用此数据 class 同时 递增 整数字段:
val myAlarmStatus = MyAlarmStatus(
notifyTimes++
)
但是,由于此字段上存在 未解析的引用,因此无法编译。有人知道如何实现这一目标吗?
可能你应该在数据 class 中初始化默认值。 之后尝试两种方式:
- 创建 MyAlarmStatus 对象并尝试此对象 val myAlarmStatus = MyAlarmStatus(0) 和 myAlarmStatus.notifyTimes =+1
- 然后按照你写的尝试,设置默认值。
如果您希望能够创建 class 现有实例的增量版本,您可以为其提供一个运算符函数:
data class MyAlarmStatus(
val notifyTimes: Int
) {
operator fun inc() = MyAlarmStatus(notifyTimes + 1)
}
//Usage:
var alarmStatus = MyAlarmStatus(1)
alarmStatus++ //Instantiates new instance with incremented property value and assigns it to the var
如果你想在实例化其中一个时增加一些以前使用的值,你需要将它作为一个单独的 属性。
var lastNotifyTimes = 0
var alarmStatus = MyAlarmStatus(++lastNotifyTimes)
如果我们检查这个表达式
val myAlarmStatus = MyAlarmStatus(
notifyTimes++
)
我们需要 notifyTimes
变量,它应该在此范围内可以访问。
当我读到这里时,copy
函数是我首先想到的。因为是数据 class:
var alarmStatus = alarmStatus.let{ old -> it.copy(notifyTimes= old.notifyTimes+1) }