在搭建Scala开发环境一文中可以看到不加任何参数直接运行scala
命令时,会启动REPL(Read,Eval,Print,Loop)
环境,然后就可以在这个环境里交互地执行Scala
代码。本文介绍如何运行Scala
脚本(script
)。
首先创建一个简单的Scala
脚本(hello.scala
):
print("Hello world!\n")
a)直接运行scala hello.scala
:
[root@Fedora scala]# scala hello.scala
Hello world!
b)在REPL
环境用load
命令运行hello.scala
:
[root@Fedora scala]# scala
Welcome to Scala version 2.10.4 (OpenJDK 64-Bit Server VM, Java 1.8.0_45).
Type in expressions to have them evaluated.
Type :help for more information.
scala> :load hello.scala
Loading hello.scala...
Hello world!
c)如果想把脚本编译成JVM byte code
(一组*.class
文件),可以使用scalac
程序(命令行选项是-Xscript <object>
,<object>
是“main class
”的名字,也即Java
程序的入口):
[root@Fedora scala]# scalac -Xscript hello hello.scala
[root@Fedora scala]# ls
hello$$anon$1.class hello.class hello$.class hello.scala
[root@Fedora scala]# scala hello
Hello world!
也可以用scalap
这个逆向分析工具分析一下hello.class
:
[root@Fedora scala]# scalap -cp . hello
object hello extends scala.AnyRef {
def this() = { /* compiled code */ }
def main(argv : scala.Array[scala.Predef.String]) : scala.Unit = { /* compiled code */ }
}