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 Tutorialを読むと便利です。

于 2012-10-08T18:04:41.100 に答える