我找到了以下代码段:
List[T] forSome { type T }
forSome
看起来像是一种方法,但我的朋友告诉我这是一个关键字。
我用谷歌搜索了它,但发现了很少关于forSome
的文件。它是什么意思,我在哪里可以获得一些文件?
答案 0 :(得分:51)
forSome
关键字用于定义Scala中的存在类型。这个Scala glossary页面解释了它们是什么。我在Scala文档中找不到详细解释它们的位置,所以here是我在Google上发现的博客文章,解释了它们的用途。
更新:您可以在Scala specification中找到存在类型的精确定义,但它非常密集。
总结一下我链接的一些帖子,当你想要操作某些东西但不关心其中的类型细节时,存在类型是有用的。例如,您希望对数组进行操作,但不关心数组的:
def printFirst(x : Array[T] forSome {type T}) = println(x(0))
您也可以使用方法上的类型变量:
def printFirst[T](x : Array[T]) = println(x(0))
但您可能不希望在某些情况下添加类型变量。您还可以为类型变量添加绑定:
def addToFirst(x : Array[T] forSome {type T <: Integer}) = x(0) + 1
另见this blog post这是我从这里得到这个例子的地方。
答案 1 :(得分:3)
我不知道Scala,但你的问题引起了我的兴趣并开始使用Google搜索。
我在Scala's changelog中找到了:
“现在可以使用new关键字定义存在类型
forSome
。存在类型的格式为T forSome {Q}
,其中Q
为a 值序列和/或类型声明。 “