如何增加 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 中初始化默认值。 之后尝试两种方式:

  1. 创建 MyAlarmStatus 对象并尝试此对象 val myAlarmStatus = MyAlarmStatus(0) 和 myAlarmStatus.notifyTimes =+1
  2. 然后按照你写的尝试,设置默认值。

如果您希望能够创建 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) }