繁体   English   中英

Scala中的forSome关键字是做什么用的?

[英]What is the forSome keyword in Scala for?

我发现以下代码片段:

List[T] forSome { type T }

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

我用Google搜索了它,但是没有找到关于forSome文档。 这是什么意思,我在哪里可以得到一些文件?

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是值和/或类型声明的序列。”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM