我想将两个不同案例类的字段合并为一个案例类.
例如,如果我有以下案例类:
case class Test(name:String, questions:List[Question], date:DateTime)
case class Answer(answers:List[Answers])
Run Code Online (Sandbox Code Playgroud)
我想要一个简洁的无形方式将两者合并为:
TestWithAnswers(name:String, questions:List[Question], date:DateTime, answers:List[Answer]).
Run Code Online (Sandbox Code Playgroud)
那里有一个很好的无形答案吗?
对于无形的新手,我对使用需要一些依赖性的多态函数有疑问.我基本上有这个代码,并希望从run方法中拉出somePoly对象:
import shapeless._
object SomeObject {
type SomeType = Int :+: String :+: (String, Int) :+: CNil
def run( someList: List[SomeType], someInt:Int, someWord:String ) = {
object somePoly extends Poly1 {
implicit def doIt = at[Int]( i => i + someInt + someWord.length)
implicit def doIt2 = at[String]( i => i.length + someWord.length)
implicit def doIt3 = at[(String, Int)]( i => i._1.length + someWord.length)
}
someList.map( _.map(somePoly) )
}
}
Run Code Online (Sandbox Code Playgroud)
我想这样做的一种方式就是这样,但它似乎很乱:
object TypeContainer {
type SomeType = Int :+: String …Run Code Online (Sandbox Code Playgroud)