我阅读了dispatch
的代码,并发现了这个文件,其中写道:
object Elem extends (Res => scala.xml.Elem) {
def apply(res: Res) =
XML.withSAXParser(factory.newSAXParser).loadString(res.getResponseBody)
...
< p >“object Elem extends (Res => scala.xml.Elem)”是什么意思?
我阅读了dispatch
的代码,并发现了这个文件,其中写道:
object Elem extends (Res => scala.xml.Elem) {
def apply(res: Res) =
XML.withSAXParser(factory.newSAXParser).loadString(res.getResponseBody)
...
< p >“object Elem extends (Res => scala.xml.Elem)”是什么意思?
A => B
是用于描述匿名函数的语法。
对象声明
object Elem extends (Res => scala.xml.Elem) { /* ... */ }
是……的缩写
object Elem extends Function1[Res, scala.xml.Elem] { /* ... */ }
Elem
是一个函数,它可以从Res
对象生成一个scala.xml.Elem
对象。apply
方法,用于实现函数逻辑。这也说明了函数是对象。
函数是一组特征,特别地,接受一个参数的函数是
Function1
特征的实例。类也可以扩展 Function ,并且这些实例可以使用
()
来调用。
scala> class AddOne extends Function1[Int, Int] {
| def apply(m: Int): Int = m + 1
| }
defined class AddOne
extends (Int => Int)
,它等同于extends Function1[Int, Int]
。class AddOne extends (Int => Int) {
def apply(m: Int): Int = m + 1
}
这看起来像是你问题中的语法。