【问题标题】:What is the forSome keyword in Scala for?Scala 中的 forSome 关键字是干什么用的?
【发布时间】:2012-03-15 17:48:14
【问题描述】:

我找到了以下代码sn-p:

List[T] forSome { type T }

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

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

【问题讨论】:

    标签: scala


    【解决方案1】:

    我不了解 Scala,但您的问题引起了我的兴趣并开始使用 Google 搜索。

    我发现在Scala's changelog:

    "现在可以使用 new 关键字定义存在类型 forSome。存在类型具有 T forSome {Q} 的形式,其中 Q 是 值和/或类型声明的序列。 "

    【讨论】:

    【解决方案2】:

    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,这是我从中获得此示例的地方。

    【讨论】:

    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 2013-08-14
    • 2014-11-28
    • 2018-09-15
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 2014-11-29
    相关资源
    最近更新 更多