【发布时间】:2016-07-31 22:03:49
【问题描述】:
我有一个字符串的 HList:
val strings = "The Lorax" :: "Dr. Suess" :: HNil
我是另一个特殊类型的 HList:
case class Title(title: String, words: List[String])
case class Author(firstName: String, lastName: String)
val book = Title("The Hobbit", List("Hobbit")) :: Author("J.R.R.", "Tolkien") :: HNil
我想把“strings”,我的字符串HList,变成一个混合类型的HList,对应“book”列表。如果我有一个从字符串-> 标题的方法,以及一个从字符串-> 作者的方法,我觉得这应该非常简单,基本上可以将“字符串”作为“书”-list 的一个实例-type 使用 shapeless,但我似乎想不出办法。
编辑
我的用例涉及处理从案例类开始的 HList。我使用 shapeless 是因为我希望能够以相同的方式转换和修改不同案例类的数据,而不必对案例类的形状进行硬编码,我只想知道它们的值的类型。因此,理想情况下,这种方法也适用于从如下所示的字符串列表中获取:
val strings2 = "Leonardo" :: "April O'Neil" :: "The Art of Pizza" :: HNil
val book2 = Author("Michaelangelo") :: Author("Donatello") :: Title("Slicing and Dicing"), List("Slicing", "Dicing") :: HList
因此,我将始终提供它需要采用的格式的示例,但我不想将“作者”的数量和“书籍”的数量硬编码到翻译函数列表中。我想说“a,a,b”应该看起来像“A,A,B”,这是从“a -> A”开始的方法,这是从“b -> B”,但我希望能够使用相同的代码从“b,a,b”转到“B,A,B”,因为我有两个列表。
【问题讨论】: