我已经看到了几个使用泛型符号“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。)