我正在阅读dispatch
的代码,并遇到了这个file,其中说:
object Elem extends (Res => scala.xml.Elem) {
def apply(res: Res) =
XML.withSAXParser(factory.newSAXParser).loadString(res.getResponseBody)
...
object Elem extends (Res => scala.xml.Elem)
是什么意思?
答案 0 :(得分:3)
A => B
是用于描述anonymous functions的语法。
对象声明
object Elem extends (Res => scala.xml.Elem) { /* ... */ }
是
的简写object Elem extends Function1[Res, scala.xml.Elem] { /* ... */ }
在自然语言中:Elem
是一个从scala.xml.Elem
对象生成Res
对象的函数。
查看scaladoc for Function1
表明Function1
声明了一个抽象apply
方法,用于实现函数的逻辑。
答案 1 :(得分:1)
功能是一组特征。具体而言,采用一个参数的函数是
Function1
特征的实例。类也可以扩展Function,并且可以使用
()
调用这些实例。
scala> class AddOne extends Function1[Int, Int] {
| def apply(m: Int): Int = m + 1
| }
defined class AddOne
extends Function1[Int, Int]
的简短说法是extends (Int => Int)
class AddOne extends (Int => Int) {
def apply(m: Int): Int = m + 1
}
这看起来像你问题中的语法。