gpt4 book ai didi

scala - 迭代案例类数据成员

转载 作者:行者123 更新时间:2023-12-03 03:28:24 25 4
gpt4 key购买 nike

我正在使用 mongodb 编写一个 play2.1 应用程序,并且我的模型对象有点广泛。更新数据库中的条目时,我需要将来自表单的临时对象与数据库中的内容进行比较,以便我可以构建更新查询(并记录更改)。

我正在寻找一种方法来一般获取两个实例并获取它们的差异。迭代每个数据成员很长,硬编码并且容易出错(如果 a.firstName.equalsIgnoreCase(b.firstName)),所以我正在寻找一种迭代所有数据成员并水平比较它们的方法(名称映射 -> 值就可以,或者我可以信任的列表每次都以相同的顺序枚举数据成员)。

有什么想法吗?

case class Customer(
id: Option[BSONObjectID] = Some(BSONObjectID.generate),
firstName: String,
middleName: String,
lastName: String,
address: List[Address],
phoneNumbers: List[PhoneNumber],
email: String,
creationTime: Option[DateTime] = Some(DateTime.now()),
lastUpdateTime: Option[DateTime] = Some(DateTime.now())
)

下面的三个解决方案都很棒,但我仍然无法获取字段的名称,对吗?这意味着我可以记录更改,但不能记录它影响的字段...

最佳答案

也许 productIterator 就是您想要的:

scala> case class C(x: Int, y: String, z: Char)
defined class C

scala> val c1 = C(1, "2", 'c')
c1: C = C(1,2,c)

scala> c1.productIterator.toList
res1: List[Any] = List(1, 2, c)

关于scala - 迭代案例类数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17826599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com