Scala中的forSome关键字是什么?

我发现下面的代码片段:

List[T] forSome { type T } 

forSome看起来像一个方法,但我的朋友告诉我这是一个关键字。

我Googlesearch了一下,但是发现了几个forSome文档。 这是什么意思,我在哪里可以得到一些关于它的文件?

forSome关键字用于定义Scala中的存在types。 有这个斯卡拉词汇表页面解释他们是什么。 我无法在Scala文档中find详细地解释它们的地方,所以这里是我在Google上发现的一篇博客文章,解释它们如何有用。

更新:您可以在Scala规范中find存在types的精确定义,但它非常密集。

总结我链接到的一些职位,存在types是有用的,当你想操作的东西,但不关心它的types的细节。 例如,你想操作数组,但不关心什么样的数组:

 def printFirst(x : Array[T] forSome {type T}) = println(x(0)) 

你也可以在方法中使用一个typesvariables:

 def printFirst[T](x : Array[T]) = println(x(0)) 

但在某些情况下您可能不想添加typesvariables。 你也可以添加一个绑定到typesvariables:

 def addToFirst(x : Array[T] forSome {type T <: Integer}) = x(0) + 1 

也看到这个博客文章 ,这是我从这个例子。

我不知道斯卡拉,但你的问题拿起我的兴趣,并开始Googlesearch。

我发现在Scala的变更日志中 :

“现在可以使用new关键字forSome来定义存在types了,一个存在types的forms是T forSome {Q} ,其中Q是一个值和/或types声明的序列。