我发现以下代码片段:
List[T] forSome { type T }
在forSome
看起来像一个方法,但我的朋友告诉我,这是一个关键字。
我在Google上进行了搜索,但找不到有关的文件forSome
。这是什么意思,我在哪里可以得到一些文件?
Answers:
该forSome
关键字用于Scala中定义生存类型。Scala的词汇表页面解释了它们是什么。我无法在Scala文档中找到详细解释它们的地方,因此这是我在Google上发现的博客文章,其中解释了它们的有用性。
更新:您可以在Scala规范中找到存在类型的精确定义,但是它非常密集。
总结一下我链接到的一些文章,当您想对某物进行操作但不关心其中的类型细节时,存在性类型很有用。例如,您想对数组进行操作,但不关心哪种数组:
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
另请参阅此博客文章,这是我从中获得此示例的地方。
我不认识Scala,但是您的问题引起了我的兴趣,并开始使用Google搜索。
我发现在Scala的changelog中:
“现在可以使用新的关键字来定义生存类型
forSome
。一个存在类型的形式T forSome {Q}
,其中Q
是的值和/或类型声明的序列。”