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声明的序列。