首页 > 解决方案 > Kotlin - 如何从数据类列表中更新特定值

问题描述

我有一个工人的数据类,

data class Worker(val id: Int, val name:String, val gender :String, val age :Int, val tel:String,val email:String)

和工人名单

List<Worker> = listOf(workerA, workerB)

我想写一个函数来更新 Worker 的数据,例如:

updateWorkerData(1, age, 28)

//'type' refer to name, gender, age ..
//'value' refer AA, Female, 27 ..
fun updateWorkerData(id: Int, type: Any, value: Any) {
  val workers = getListOfWorker()
  workers.forEach {
  if (it.id == id) {
   //here is where I stuck    
  }    
}
}

我被困在如何将类型引用到数据类 Worker 中的值上。需要一些有关如何更新 Worker 数据的指南。谢谢。

标签: androidkotlindata-class

解决方案


您的数据类应该具有可变属性,以便可以更改它们:

data class Worker(val id: Int, var name: String, var gender: String, var age: Int, var tel: String, var email: String)

然后您可以将 KProperty 传递给可以更改该属性的函数:

fun <T> updateWorkerData(id: Int, property: KMutableProperty1<Worker, T>, value: T) {
    val workers = getListOfWorker()
    workers.forEach {
        if (it.id == id) {
            property.set(it, value)
        }
    }
}

updateWorkerData(1, Worker::age, 28)

推荐阅读