data class 中的参数在 Kotlin 中可以是 var 吗?

Can the parameter in data class be var in Kotlin?

我是Kotlin初学者,看过一些关于data的示例代码class,好像参数都是val类型,和代码A一样

我需要改变一些数据的值class MSetting,所以我设计了Code B,请问Code B好不好?

代码A

data class MSetting (
        val _id: Long, 
        val name: String,
        val createdDate: Long,
        val description: String
)

代码B

data class MSetting (
        var _id: Long, 
        var name: String,
        var createdDate: Long,
        var description: String
)

it seems that the parameter are all val type...

could you tell me whether the Code B is good way?

valvar的区别:用val声明的属性不能随时间更新;它就像 java 中的常数。用 var 声明的属性可以随时间更改。

这完全取决于您的要求。如果您需要随时间更改属性,请选择 varval 否则。您可以将两者混合在一个对象中,没有任何问题。

在此处阅读有关 Kotlin 文档中属性的更多信息 https://kotlinlang.org/docs/reference/properties.html

我喜欢使用 val 作为经验法则,因为它使数据 class 不可变。当然,我正在使用 var 但只有在必要时才使用。为什么让数据 class 不可变更好? read this.

这完全取决于您的应用程序。正如我们所知,val 是不可变的变量类型——一旦赋值,我们就无法更改它的值,而 var 是可变数据类型——可以更改或重新分配值。 因此,如果您有需要从该数据 class 更改值的要求,请使用 -“var”,否则您可以使用“val”。

数据类和解构声明

data class Person(val name: String) {
    var age: Int = 0
}

在toString()、equals()、hashCode()、copy()实现中只会使用属性名称,并且只有一个组件函数component1()。虽然两个 Person 对象可以有不同的年龄,但它们将被视为相等。

val person1 = Person("John")
val person2 = Person("John")
person1.age = 10
person2.age = 20