类型同义词中的type-case

时间:2014-11-14 10:39:43

标签: scala shapeless

Shapeless允许在多态函数中使用特定于类型的案例。是否有某种方法可以与类型成员实现相同,并获得道德等同于

type Foo[T] = T match {
  case Int => ...
  case List[A] => ...
}

2 个答案:

答案 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 = ...