我想通过阅读Scala for the Impatient来学习Scala。这本书开始说要在REPL中输入代码,但这变得乏味,所以我开始将我的代码放在一个文件中,然后通过键入scala myApp.scala
从命令行运行它。一切似乎都很好。我决定通过将#!/usr/bin/env scala
放在最前面来让我的程序更容易运行,所以我只需从命令行键入./myFile.scala
即可。一切都继续良好。为什么Scala程序要有主要方法或扩展App特性?
后来,书上说“每个Scala的程序必须使用对象的main
方法开始......”,并给出了一个例子。紧接着,它说:“您可以扩展App
特性并将程序代码放入构造函数体中,而不是为您的应用程序提供main
方法”,并举例说明。
为什么我会想要做的那些事?
我试图把我的代码中的对象的main
方法,它仍然工作,但对象和方法main
看似无用的克鲁夫特给我。
我试图把我的代码在扩展App
的对象,它没有做任何事情,当我试图直接在命令行中运行它。当我通过scalac
运行它然后运行scala MyApp
时,它运行良好,但对于我正在开发的小型玩具项目来说,这些看起来像是无用的步骤。
使用main
方法生成对象或者扩展为App
的对象的目的是什么?
编辑:有人将此问题标记为“scala脚本和应用程序之间的区别”的副本。我想说它可以说不是重复的,因为它是关于具有main
方法并从App
延伸的,而不是关于“脚本”和“应用程序”这两个词的含义。但是,它非常接近,所以我的问题可能没有必要。我不知道这个问题应该如何处理。随意关闭它,或者在您认为合适的时候将其打开。