我已经看到了几个使用泛型符号“That”的代码示例。IE
def map[B, That](f : (A) => B) : That
但是,由于该词缺乏谷歌能力,我找不到任何关于它的作用或如何使用它的文档。
它只是一个普通类型的占位符,还是做了一些特别的事情?
内部的任何标识符[...]
都被视为类型参数。
因此,def map[B, That](f : (A) => B) : That
That
仅表示泛型返回类型。将其替换Z
为例如:def map[B, Z](f : (A) => B) : Z
将具有完全相同的效果。
翻译成Java,那将是:
public <B, That> That map(f: Function1<A, B>)
或者,换句话说,That
是一个泛型(或者,在 Scala 术语中,一个类型参数)。
正如您所说,它是一个“占位符”(即类型参数);集合库中的约定That
用于表示将要创建的集合的类型。(因此,您从 转换this
为That
。)