将下划线传递给类型构造函数

时间:2018-04-20 11:03:48

标签: scala types existential-type

我今天遇到了一个方法,其签名如下:

def foo() : Future[_] = { /* some code */ }

我的问题是这里的返回类型是什么意思?这是否意味着此方法返回Future并且我不关心计算的类型是什么?还是别的什么?

1 个答案:

答案 0 :(得分:5)

Future[_] - 类型只是the placeholder syntax for existential type

Future[X] forSome { type X }

这样

def foo(): (Future[X] forSome { type X }) = { /* some code */ }

表示:foo返回Future,其值为某种未知类型X。所以,你的解释

  

"这个方法返回一个Future,我不在乎计算的类型是什么"

是对的。