我正在通过 ScalaInAction 工作(这本书仍然是 MEAP,但代码在 github 上是公开的)现在我在第 2 章中查看这个 restClient: : https://github.com/nraychaudhuri/scalainaction/blob/master/ chap02/RestClient.scala
首先,我使用 scala 扩展设置了 intelliJ,并创建了一个 HelloWorld main()
:
<ALL the imports>
object HelloWorld {
def main(args: Array[String]) {
<ALL the rest code from RestClient.scala>
}
}
编译时出现以下错误:
scala: forward reference extends over defintion of value command
val httppost = new HttpPost(url)
^
我可以通过移动以下行来解决此问题,直到相对于def
's的顺序正确
require( args.size >= 2, "You need at least two arguments to make a get, post, or delete request")
val command = args.head
val params = parseArgs(args)
val url = args.last
command match {
case "post" => handlePostRequest
case "get" => handleGetRequest
case "delete" => handleDeleteRequest
case "options" => handleOptionsRequest
}
在浏览 github 页面时,我发现了这个:https ://github.com/nraychaudhuri/scalinaction/tree/master/chap02/restclient
哪个使用实现 RestClient.scala 使用extends App
而不是main()
方法:
<All the imports>
object RestClient extends App {
<All the rest of the code from RestClient.scala>
}
然后我将我的更改object HelloWorld
为仅使用extends App
而不是实现main()
方法,并且它可以正常工作
为什么这样做的main()
方法会产生错误但extends App
不会产生错误?