У меня есть HList строк:Карта гомогенную HList одного типа в hetergenous 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
Я хочу, чтобы включить " строки ", мой HList строк, в HList смешанных типов, соответствующих списку" book ". Если у меня есть метод перейти от строки -> Заголовок и метод для перехода от строки -> Автор, я чувствую, что это должно быть очень просто, чтобы по существу получить «строки» в качестве экземпляра «book» -list типа с бесформенным, но я не могу понять, каким образом.
EDIT
Мой случай использования для этого включает в себя работу по HLists, начавшихся в случае классов. Я использую бесформенность, потому что я хочу иметь возможность трансформировать и модифицировать данные разных классов case одинаковым образом, не имея необходимости жестко кодировать знания о форме классов case, я хочу знать только о типы их значений. Таким образом, в идеале этот метод будет работать также для выхода из списка строк, выглядит следующим образом:
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 ", учитывая, что у меня есть оба списка.
Спасибо, что вернулись ко мне так быстро, Трэвис! Я редактировал вопрос, потому что боюсь, что zipApply действительно не работает для моей ситуации. Я также попробовал задать более конкретный и подробный вопрос [здесь] (http://stackoverflow.com/questions/38684994/using-shapeless-to-extract-data-from-case-classes-modify-it-and-recreate -s-c) на всякий случай, если нет простого способа сделать то, что я пытаюсь сделать, и я подхожу к проблеме из-за неправильного угла. В любом случае, спасибо! –