Scala中的符号“那”是什么意思

时间:2013-02-13 07:57:32

标签: scala generics

我见过几个使用Generics符号“That”的代码示例。即

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

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

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

3 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:3)

转换为Java,即:

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

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

答案 2 :(得分:3)

当你调用它时,它是一个“占位符”(即一个类型参数);集合库中的约定是使用That来表示将要创建的集合的类型。 (因此,您从this转换为That。)