Scala代码在不使用scalac编译的情况下运行?

Scala代码在不使用scalac编译的情况下运行?,scala,Scala,根据Scala教程,我们需要使用scalac filename.Scala编译Scala代码,然后再使用Scala filename执行它。但是当我尝试使用scala filename.scala时,它运行并得到了输出 为什么会这样?那么运行代码不需要使用scalac编译?有人能解释一下吗 谢谢。 scala-help非常有用。上面说 A file argument will be run as a scala script unless it contains only se

根据Scala教程,我们需要使用
scalac filename.Scala
编译Scala代码,然后再使用
Scala filename
执行它。但是当我尝试使用scala filename.scala时,它运行并得到了输出

为什么会这样?那么运行代码不需要使用scalac编译?有人能解释一下吗

谢谢。
scala-help
非常有用。上面说

    A file argument will be run as a scala script unless it contains only
    self-contained compilation units (classes and objects) and exactly one
    runnable main method.  In that case the file will be compiled and the
    main method invoked.  This provides a bridge between scripts and standard
    scala source.

感谢Dennis提供的指针。

运行
scala
命令实际上首先在后台编译,然后运行生成的程序。

scala命令的帮助中解释了此行为


您可以通过执行
scala-help
命令来获得帮助。

scala可以用作一种脚本语言,并且可以从较新的版本(不记得是哪个版本)上获得帮助,这是可能的,运行代码时甚至不定义类或类object@DoomProg有趣。当你说“运行代码而不定义类或对象”时,你指的是Scala工作表吗。试着用println(“hello”)创建一个文件,并用scala命令运行它。如果你有Scala2.10和更高版本,我认为你应该能够得到这个信息。所以,正如你所说的,应该会生成类文件。这些文件用于运行。但我找不到在当前目录下生成的任何类文件。那么这个类文件应该驻留在哪里呢?@Maximin in mainmemory@sschaef谢谢如果我能得到一些链接或指向文档的指针来解释这一点,那就太好了。有趣的是,我所涵盖的几乎所有教程都没有引用这句话。@Maximin我认为这不在记忆上。
ScriptRunner
类调用编译器,在JVM退出时使用该编译器将其删除。临时目录路径因操作系统而异。还可以使用-save选项保存jar文件。