Scala 在两个case类中合并非null字段
我试图将示例从无形状库修改为只合并非空字段Scala 在两个case类中合并非null字段,scala,shapeless,Scala,Shapeless,我试图将示例从无形状库修改为只合并非空字段 object mergeSyntax { implicit class MergeSyntax[T](t: T) { def merge[U](u: U)(implicit merge: CaseClassMerge[T, U]): T = merge(t, u) } } trait CaseClassMerge[T, U] { def apply(t: T, u: U): T } object CaseClassMerge {
object mergeSyntax {
implicit class MergeSyntax[T](t: T) {
def merge[U](u: U)(implicit merge: CaseClassMerge[T, U]): T = merge(t, u)
}
}
trait CaseClassMerge[T, U] {
def apply(t: T, u: U): T
}
object CaseClassMerge {
import ops.record.Merger
def apply[T, U](implicit merge: CaseClassMerge[T, U]): CaseClassMerge[T, U] = merge
implicit def mkCCMerge[T, U, RT <: HList, RU <: HList]
(implicit
tgen: LabelledGeneric.Aux[T, RT],
ugen: LabelledGeneric.Aux[U, RU],
merger: Merger.Aux[RT, RU, RT]
): CaseClassMerge[T, U] =
new CaseClassMerge[T, U] {
def apply(t: T, u: U): T =
tgen.from(merger(tgen.to(t), ugen.to(u)))
}
}
对象合并语法{
隐式类合并语法[T](T:T){
def merge[U](U:U)(隐式合并:CaseClassMerge[T,U]):T=merge(T,U)
}
}
特征案例类合并[T,U]{
def应用(t:t,u:u):t
}
对象CaseClassMerge{
导入操作、记录、合并
def apply[T,U](隐式合并:CaseClassMerge[T,U]):CaseClassMerge[T,U]=合并
隐式def mkCCMerge[T,U,RT您可以将自己的隐式合并实现添加到当前范围,覆盖标准合并:
objectnotnullhlistmerge{
导入未成型的。已标记_
导入shapeless.ops.record.merge
导入shapeless.ops.record.Remover
隐式def notnullhlistmerge[K,V,T