我已经看到过多个使用泛型符号“That”的代码示例,例如:
但是,由于这个词不易于在谷歌上搜索,我找不到任何关于它的文档,也不知道如何使用它。
它只是一个普通的类型占位符,还是有特殊作用?
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
。