gpt4 book ai didi

scala - Scala类参数化中附加冒号的含义

转载 作者:行者123 更新时间:2023-12-03 07:50:41 26 4
gpt4 key购买 nike

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

在哪里可以找到有关此主题的更多信息?

最佳答案

这称为上下文绑定(bind)。它们是隐式参数列表的语法糖:

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

// ==>

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

如果从 1 到 N 有多个上下文边界,则它们都被转换为相同的参数列表。见 this question有关它们如何工作以及它们的用途的更详细说明。

要找到这样的符号,阅读 StackOverflow Scala Tutorial 很有用。 .

关于scala - Scala类参数化中附加冒号的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12786910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com