chr*_*ris 35 generics types scala
[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
}
}
Run Code Online (Sandbox Code Playgroud)
我在哪里可以找到有关此主题的更多信息?
kir*_*uku 43
这称为上下文绑定.它们是隐式参数列表的语法糖:
def meth[A : ContextBound1 : ContextBoundN](a: A)
// ==>
def meth[A](a: A)(implicit evidence: ContextBound1[A], ContextBoundN[A])
Run Code Online (Sandbox Code Playgroud)
如果从1到N有多个上下文边界,则它们都被转换为相同的参数列表.请参阅此问题以获取有关它们如何工作以及它们有用的更详细说明.
要查找此类符号,请阅读StackOverflow Scala教程.