У меня есть этот тип, который будет сгенерирован с помощью бесформенного:
type hlistt = STUDENT.type :: AUTO_LOANS.type :: HNil
В основном у меня есть куча объектов case, расширяющих черту, поэтому мне удалось создать метод, который дает мне экземпляры всех объектов case какHList
Затем, используя import shapeless.ops.hlist.Last
и init
, я написал метод для получения одного из узлов в HList, если значение равно строке "student":
def getLast(hl:hlistt) = {
val last0=Last[hlistt]
val la=last0(hl)
if (la.value == "student") la
else init(hl)
}
Проблема в том, что если я вызову этот метод, я не получу правильный тип узла из HList.
getLast(STUDENT :: AUTO_LOANS :: HNil)
Метод работает и возвращает узел, но тип отключен:
Product with Serializable = STUDENT :: HNil
Нужны ли мне какие-либо косвенные выражения Witness / Aux для возврата правильного типа?