我找到了以下代码片段:
List[T] forSome { type T }
The forSome
看起来像一个方法,但我的朋友告诉我这是一个关键字。
我用谷歌搜索了一下,但发现很少有关于forSome
。它是什么意思?我在哪里可以获得相关文档?
The forSome
关键字用于定义 Scala 中的存在类型。有这个斯卡拉glossary http://docs.scala-lang.org/glossary/#existential_type页面解释它们是什么。我在 Scala 文档中找不到详细解释它们的地方,所以here http://scalada.blogspot.com/2008/01/existential-types.html是我在 Google 上找到的一篇博客文章,解释了它们的用途。
更新:您可以在中找到存在类型的精确定义Scala规范 http://scala-lang.org/files/archive/spec/2.11/03-types.html#existential-types但它相当密集。
总结我链接到的一些帖子,当您想要对某些内容进行操作但不关心其中类型的详细信息时,存在类型非常有用。例如,您想对数组进行操作但不关心哪一种数组的:
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
另请参阅这篇博文 http://www.drmaciver.com/2008/03/existential-types-in-scala/这就是我从哪里得到这个例子的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)