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

Posted

技术标签:

【中文标题】Scala类参数化中附加冒号的含义【英文标题】:Meaning of additional colon in Scala class parametrization 【发布时间】:2012-10-08 17:52:03 【问题描述】:

以下代码中的[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
    
  

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

【问题讨论】:

【参考方案1】:

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

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

// ==>

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

如果有从 1 到 N 的多个上下文边界,它们都被翻译成同一个参数列表。请参阅this question,了解有关它们的工作原理和用途的更详细说明。

要查找此类符号,请阅读*** Scala Tutorial。

【讨论】:

以上是关于Scala类参数化中附加冒号的含义的主要内容,如果未能解决你的问题,请参考以下文章

处理使用typescript在类实例化中反转@inject()参数

可变参数模板错误:“在实例化中”(gcc 9.2)

loadrunner参数化中 select next row 和update value on一共有几种组合方式

scala 将元组解包到案例类参数和附加的 zip 两个序列中

如何在不选择模式配置参数的情况下使用 mongoose 在 MongoDB 模式实例化中的关联数组/对象中执行 foreach?

Scala的下一步