6

我已经看到了几个使用泛型符号“That”的代码示例。IE

def map[B, That](f : (A) => B) : That

但是,由于该词缺乏谷歌能力,我找不到任何关于它的作用或如何使用它的文档。

它只是一个普通类型的占位符,还是做了一些特别的事情?

4

3 回答 3

13

内部的任何标识符[...]都被视为类型参数。

因此,def map[B, That](f : (A) => B) : That That仅表示泛型返回类型。将其替换Z为例如:def map[B, Z](f : (A) => B) : Z将具有完全相同的效果。

于 2013-02-13T08:02:21.823 回答
3

翻译成Java,那将是:

public <B, That> That map(f: Function1<A, B>)

或者,换句话说,That是一个泛型(或者,在 Scala 术语中,一个类型参数)。

于 2013-02-13T08:14:37.637 回答
3

正如您所说,它是一个“占位符”(即类型参数);集合库中的约定That用于表示将要创建的集合的类型。(因此,您从 转换thisThat。)

于 2013-02-13T12:14:22.763 回答