加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala类参数化中附加冒号的含义

发布时间:2020-12-16 09:39:55 所属栏目:安全 来源:网络整理
导读:[A:Manifest:WireFormat]在以下代码中是什么意思?来自com.nicta.scoobi.TextInput(在github上可用)。它似乎不是任何常见的类型边界。 def fromDelimitedTextFile[A : Manifest : WireFormat] (path: String,sep: String = "t") (extractFn: PartialFunct
[A:Manifest:WireFormat]在以下代码中是什么意思?来自com.nicta.scoobi.TextInput(在github上可用)。它似乎不是任何常见的类型边界。

def fromDelimitedTextFile[A : Manifest : WireFormat]
      (path: String,sep: String = "t")
      (extractFn: PartialFunction[List[String],A])
    : DList[A] = {

    val lines = fromTextFile(path)
    lines.flatMap { line =>
      val fields = line.split(sep).toList
      if (extractFn.isDefinedAt(fields)) List(extractFn(fields)) else Nil
    }
  }

在哪里可以找到有关此主题的更多信息?

解决方法

这被称为上下文绑定。它们是隐式参数列表的语法糖:

def meth[A : ContextBound1 : ContextBoundN](a: A)

// ==>

def meth[A](a: A)(implicit evidence: ContextBound1[A],ContextBoundN[A])

如果从1到N有多个上下文边界,则它们都被转换为相同的参数列表。有关它们的工作原理及其有用的更详细的说明,请参见this question。

要找到这样的符号,阅读StackOverflow Scala Tutorial是有用的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读