将一个案例类转换为具有相同结构但具有一个附加字段的另一个案例类

博丹·彼得伦科

假设我有两个案例类:

case class C1(a: Int, b: String)
case class C2(a: Int, b: String, c: Long = 0)

我想将C1的实例转换为C2,然后设置其他字段c我发现以下解决方案:

C1.unapply(C1(1, "s1")).map(v => C2(v._1, v._2, 7l))

但是一一指定参数不适用,因为实际案例类将至少具有15个参数。有什么想法如何解决吗?

雷克斯

可以通过执行类似此线程的操作来完成此解决方案。

如何在Scala中将元素追加或添加到元组

implicit class TupOps2[A, B](val x: (A, B)) extends AnyVal {
  def :+[C](y: C) = (x._1, x._2, y)
  def +:[C](y: C) = (y, x._1, x._2)
}

用法:

val c1      = new C1(1, "s1")
val longVal = 0L

scala> C1.unapply(c1).map(r => (r :+ longVal))
res0: Option[(Int, String, Long)] = Some((1,s1,0))

scala> C1.unapply(c1).map(r => (C2.apply _) tupled (r:+ longVal))
res45: Option[C2] = Some(C2(1,s1,0))

希望能帮助到你 :)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当参数列表相同时,将一个案例类转换为另一个案例类

无形-将案例类转换为具有不同顺序字段的另一个

如何使用“ scopt”命令行参数解析具有字段作为另一个案例类的案例类?

如何使用scala将具有列表值的案例类适当地平整到另一个案例类

在Scala中,如何将一个案例类转换为另一个不受代码更改字段影响的类?

将 1 个类转换为具有相同字段的另一个类

对包含另一个案例类 Seq 的案例类 Seq 进行排序

在 SQL Oracle 中用另一个案例创建一个案例

将案例类转换为另一个递归结构相同的案例类

如何在R中创建一个新变量,如果一个案例缺少一个值而另一个变量具有一个观察到的值,则返回1?

为什么 Angular 中的“[selected]”在一个案例中有效,而在另一个案例中无效?

是否可以将多个案例分组并表示为 Swift 枚举中的另一个案例?

在提升后的映射中将案例类包含在另一个案例中

Mongo再写一个案例

从 PHP 中的另一个案例转到默认案例

切换案例:从另一个案例中转到“否则”

MATLAB:切换案例 - 从另一个案例中转到“否则”

在select子句的另一个案例中使用案例列

如何匹配匹配的案例以及下面的另一个案例?

是否有可能在一个案例中有一个案例,例如是否在一个if中

在一个案例中有多个选项,然后在案例中循环

需要将一个类转换为具有不同值集合的另一个类

在实例化一个案例类实例时如何混入两个特征?

将rand变量从一个类传递到另一个具有相同值的类

为什么一个案例中的内容决定了是否应该正确修剪另一个案例的内容?

为什么要在switch语句中将一个案例放入另一个案例中?

为原始数据集中的变量的每个值创建一个具有一个案例的新数据集

将一个对象数组转换为另一个具有不同结构的对象数组

一个案例可以同时执行多个案例吗?