scala – 无形的案例类转换
发布时间:2020-12-16 18:21:09 所属栏目:安全 来源:网络整理
导读:我使用shapeless进行case类转换, 我有2个案例类: import shapeless._case class Foo(id: Int,name: String)case class Bar(id: Int,name: String,price: Double)val fooGen = Generic[Foo]val barGen = Generic[Bar]val foo = Foo(1,"foo")val fooRepr = fo
我使用shapeless进行case类转换,
我有2个案例类: import shapeless._ case class Foo(id: Int,name: String) case class Bar(id: Int,name: String,price: Double) val fooGen = Generic[Foo] val barGen = Generic[Bar] val foo = Foo(1,"foo") val fooRepr = fooGen.to(foo) val additional = fooRepr :+ 1.0 val bar = barGen.from(additional) 这工作正常,但当我尝试将Bar转换为Foo时 fooGen.from(barGen.to(bar)) 我收到一个错误: found : main.barGen.Repr [error] (which expands to) shapeless.::[Int,shapeless.:: [String,shapeless.::[Double,shapeless.HNil]]] [error] required: main.fooGen.Repr [error] (which expands to) shapeless.::[Int,shapeless.::[String,shapeless.HNil]] [error] println(fooGen.from(barGen.to(bar))) 是否有可能将一个案例类转换为更多字段而不是另一个案例类? 解决方法
与调整Foo的HList表示的方式类似,通过添加元素,您还必须通过删除额外元素来调整Bar的HList表示:
fooGen.from(barGen.to(bar).take(2)) take接受一个Nat参数,这行代码使用从Int文字到Nat类型级自然数的隐式转换. 您可以在 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |