2012-10-08 11 views
27

[A : Manifest : WireFormat]は次のコードで何を意味しますか?それはcom.nicta.scoobi.TextInput(githubで利用可能)からです。それは通常のタイプ境界のいずれかではないようです。Scalaクラスの追加のコロンの意味

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 
    } 
    } 

このトピックの詳細はどこにありますか?

答えて

35

これはコンテキストバインドと呼ばれます。彼らは暗黙のパラメータリストのための糖衣構文です:マルチコンテキスト境界は1からNにある場合は

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

// ==> 

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

が、それらはすべて同じパラメータリストに変換されます。彼らがどのように機能するか、そしてそれらが有用であるかについての詳細な説明については、this questionを参照してください。

このような記号を見つけるには、StackOverflow Scala Tutorialを読むと便利です。

関連する問題