我可以使用与无形副产品匹配的模式吗?
import shapeless.{CNil, :+:}
type ListOrString = List[Int] :+: String :+: CNil
def f(a: ListOrString): Int = a match {
case 0 :: second :: Nil => second
case first :: Nil => first
case Nil => -1
case string: String => string.toInt
}
Run Code Online (Sandbox Code Playgroud)
这当然不起作用,因为a盒装为Coproduct.
有没有其他方法可以使用副产品并保持模式匹配的能力?