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

问题描述:

根据Scala教程,我们需要在使用scala filename执行之前使用scalac filename.scala编译Scala代码。但是当我尝试像scala filename.scala,它运行并获得输出。Scala代码在不使用scalac编译的情况下运行?

这是为什么?所以编译使用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. 

感谢丹尼斯的指针。

+0

Scala可以用作一种脚本语言,并且可以从更新的版本开始(不记得是哪个),这是可能的,运行代码甚至不需要定义类或对象 – billpcs 2014-12-06 15:48:57

+0

@DoomProg有趣的。当你说“运行代码时甚至没有定义类或对象”时,你是否指Scala Worksheet? – crackjack 2014-12-06 17:20:21

+1

@crackjack不仅。试着用println(“hello”)制作一个文件,然后用scala命令运行它。如果你的Scala 2.10以上,我认为你应该能够得到这个消息。 – billpcs 2014-12-06 19:36:02

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

+1

所以,正如你所说,应该生成类文件。这些文件用于运行。但我找不到任何类文件,在当前目录中生成。那么这个类文件应该放在哪里? – Maximin 2014-12-06 17:34:02

+1

@Maximin在主内存中 – sschaef 2014-12-06 17:49:29

+0

@sschaef谢谢。如果我得到一些链接或指向文档解释这一点,这将是非常好的。有趣的是,几乎所有我介绍的教程都错过了引用。 – Maximin 2014-12-06 17:54:17

此行为在scala命令的帮助中进行了说明。

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

+0

谢谢丹尼斯。 – Maximin 2014-12-06 18:13:07