的問題斯卡拉:泛型對於返回類型SEQ [A]或未來[SEQ [A]]
我有像以下兩類:
class Now {
def do[A](f: Int => A): Seq[A]
}
class Later {
def do[A](f: Int => A): Future[Seq[A]]
}
之間唯一的區別這兩個類是現在返回一個Seq,然後返回一個Future Seq。我想這兩個類共享相同的接口
我曾嘗試
這似乎是一個非常適合高kinded類型,考慮如何既序列與未來[序列]應該只需要一個類型參數。
trait Do[F[_]] {
def do[A](f: Int => A): F[A]
}
// Compiles
class Now extends Do[Seq] {
def do[A](f: Int => A): Seq[A]
}
// Does not compile. "type Seq takes type parameters" and
// "scala.concurrent.Future[<error>] takes no type parameters, expected: one"
class Later extends Do[Future[Seq]] {
def do[A](f: Int => A): Future[Seq[A]]
}
我是否正確使用更高版本的類型?我是否正確提供Future [Seq]?有沒有辦法允許Now和Later共享相同的界面?
謝謝。引用這種類型的方法是否有名字?我從來沒有見過它,並希望閱讀更多關於它。 –
@JakeGreene它被稱爲**類型lambda **。看到這個問題:http://stackoverflow.com/questions/8736164/what-are-type-lambdas-in-scala-and-what-are-their-benefits –