на вход список типов(как Coproduct или HList) и значение, которое надо проверить. Функция проверяет значение и возвращает Option с Coproduct-ом тех типов, которые переданы на вход.
Пример на псевдокоде:
sealed trait State
case object Active extends State
case object InProgress extends State
case object Canceled extends State
case object Failed extends State
type Expected = Active :+: InProgress :+: Canceled :+: HNil
val success: Option[Expected] = checkState[Expected](Active) // Some(Active)
val failure: Option[Expected] = checkState[Expected](Failed) // None
def checkState = ???
Может кто-нть где-нть видел примеры того как такую checkState сделать?
https://github.com/milessabin/shapeless/blob/main/core/src/main/scala/shapeless/ops/coproduct.scala#L1190
/toxic
Обсуждают сегодня