2012-10-08 2 views
27

다음 코드에서 [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 
    } 
    } 

이 주제에 대한 추가 정보는 어디에서 찾을 수 있습니까?

답변

35

이것을 컨텍스트 바운드라고합니다. 그들은 암시 적 매개 변수 목록에 대한 문법 설탕 있습니다 :

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

// ==> 

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

문맥 N 1에서 경계 복수가있는 경우

, 그들은 모두 같은 매개 변수 목록으로 변환됩니다. 작동 원리와 유용성에 대한 자세한 설명은 this question을 참조하십시오.

이러한 기호를 찾으려면 StackOverflow Scala Tutorial을 읽는 것이 좋습니다.

관련 문제