45

以下代码中的含义是什么[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
    }
  }

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

4

1 回答 1

59

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

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

// ==>

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

如果从 1 到 N 有多个上下文边界,则它们都被转换为相同的参数列表。有关它们如何工作以及它们的用途的更详细说明,请参阅此问题。

要找到这样的符号,阅读StackOverflow Scala 教程很有用。

于 2012-10-08T18:04:41.100 回答