是否可以使用 scala shell 来推断泛型函数的类型?
我试图理解函数 Future.traverse (scala 2.10)的类型。完整的泛型类型是
def traverse[A, B, M[_] <: TraversableOnce[_]](in: M[A])(fn: A => scala.concurrent.Future[B])(implicit cbf: generic.CanBuildFrom[M[A],B,M[B]], executor: ExecutionContext): Future[M[B]]
这对我来说足够长,几乎无法阅读,所以我认为尝试一些更具体的类型是个好主意。所以我尝试了:
> :t (x : List[_]) => (Future traverse x) _
List[_] => ((Any => scala.concurrent.Future[Nothing]) => scala.concurrent.Future[List[Nothing]])
这很有帮助,但如果我可以在 List 类型构造函数中指定类型会更好:
:t (x : List[a]) => (未来遍历 x) _
不幸的是(并且可以理解)给了我一个type a not found
错误。
有什么办法可以使这项工作?