2012-10-08 13 views
27

में अतिरिक्त कॉलन का अर्थ [A : Manifest : WireFormat] क्या निम्न कोड में है? यह com.nicta.scoobi.TextInput (गीथूब पर उपलब्ध) से है। यह सामान्य प्रकार की सीमाओं में से कोई प्रतीत नहीं होता है।स्कैला क्लास पैरामीट्रिजेशन

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]) 

यदि अनेक संदर्भ एन 1 से सीमा कर रहे हैं, वे सभी एक ही पैरामीटर सूची में अनुवाद कर रहे हैं। this question देखें कि वे कैसे काम करते हैं और उनके लिए क्या उपयोगी हैं, इसके बारे में अधिक विस्तृत स्पष्टीकरण के लिए।

ऐसे प्रतीकों को ढूंढने के लिए StackOverflow Scala Tutorial पढ़ने के लिए उपयोगी है।

संबंधित मुद्दे