【问题标题】:Meaning of additional colon in Scala class parametrizationScala类参数化中附加冒号的含义
【发布时间】: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
    }
  }

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

【问题讨论】:

    标签: scala generics types


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-23
      • 1970-01-01
      • 2013-01-24
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      相关资源
      最近更新 更多