使用copy()填充一个不可变字段



我有一个数据类,在val类型上有3个字段。

data class Person(
val id: UUID? = null,
val name: String,
val address: String?
)

我有一个家庭类,其中包含:

val familyId: UUID? = null,
val pList: List<Person>

在另一个类中,我必须迭代pList,但我需要在从另一个映射中获取该人的地址字段时,根据id。

我知道我可以使用copy()方法来填充一个不可变的字段,但我不确定如何准确地做到这一点。我试过这样的东西,但似乎不起作用。

family.pList.forEach {
it.copy(address = ‘I am getting this value from a map’ )
}

我原以为地址会填充新值,但事实并非如此。

请注意,pList中的地址字段未填充。

copy函数返回对象的一个新实例,其中包含调用copy时提供的填充字段。因此,您需要将新对象保存在某个位置。正如所写的,您的方法是创建一个复制的对象,并立即丢弃它。

我会这么做:

val withAddresses = family.pList.map {
it.copy(address = "I am getting this value from a map")
}

新变量withAddresses引用填充了地址字段的Person对象列表。

最新更新