Shapeless允许在多态函数中使用特定于类型的案例。是否有某种方法可以与类型成员实现相同,并获得道德等同于
type Foo[T] = T match {
case Int => ...
case List[A] => ...
}
答案 0 :(得分:5)
没有
不,真的没有。真。不...那是30个字符吗?
答案 1 :(得分:1)
根据您的使用情况,您可以通过为案例提供隐含来模拟类型级函数(这是很多无形的工作方式):
sealed trait Foo[T] {
type Out
}
object Foo {
implicit object IntFoo extends Foo[Int] {
type Out = String
}
implicit def list[A] = new Foo[List[A]] {
...
}
}
def myPolymorphicFunction[T](t: T)(implicit foo: Foo[T]): foo.Out = ...