scala
– Run code in the Scala 2 language
scala
[ <compiler-option> |
-howtorun:
<how> ]... [ <torun> <argument>... ]
<compiler-option>
-howtorun:
<how>
guess
(the default), script
, and object
.<torun>
<argument>
The scala
utility runs Scala code using a Java runtime environment. The Scala code to run is specified in one of three ways:
-howtorun:object
specified, the fully qualified name of a top-level Scala object may be specified. The object should previously have been compiled using scalac(1).-howtorun:script
specified, a file containing Scala code may be specified.
If -howtorun:
is left as the default (guess
), then the scala
command will check whether a file of the specified name exists. If it does, then it will treat it as a script file; if it does not, then it will treat it as the name of an object.
In all three cases, arbitrary scalac options may be specified. The most common option is to specify a classpath with -classpath
, but see the scalac(1) page for full details.
If an object is specified to run, then that object must be a top-level Scala object with the specified name. The object must define a method main with the following signature:
def main(args: Array[String]): Unit
The method must return a Unit value, and it must accept a String array as a parameter. All arguments specified on the command line will be passed as arguments to the main method.
If a script file is specified to run, then the file is read and all Scala statements and declarations in the file are processed in order. Any arguments specified will be available via the args
variable.
Script files may have an optional header fthat is ignored if present. There are two ways to format the header: either beginning with #!
and ending with !#
, or beginning with ::#!
and ending with ::!#
.
Such a header must have each header boundary start at the beginning of a line. Headers can be used to make stand-alone script files, as shown in the examples below.
If any compiler options are specified, they must be first in the command line and must be followed by a bare hypen ("-") character. If no arguments are specified after the optional compiler arguments, then an interactive interpreter is started. Otherwise, either a script file is run, or a pre-compiled Scala object is run. It is possible to distinguish the last two cases by using an explicit -object
or -script
flag, but usually the program can guess correctly.
JAVACMD
java
command to be used for running the Scala code. Arguments may be specified; they will be expanded by the shell. (Likewise, if the command includes any spaces, then the command should be wrapped in explicit quotation marks.)
Here are some examples of running Scala code:
scala
hello.HelloWorld
scala
–classpath classes
hello.HelloWorldjava
command
env JAVACMD
=/usr/local/bin/cacao
scala
–classpath classes
hello.HelloWorld
Here is a complete Scala script for Unix:
#!/bin/sh exec scala "$0" "$@" !# Console.println("Hello, world!") argv.toList foreach Console.println
Here is a complete Scala script for Unix:
::#! @echo off call scala %0 %* goto :eof ::!# Console.println("Hello, world!") argv.toList foreach Console.println
The scala
command returns a zero exit status if it succeeds. Non zero is returned in case of any error. If a script or top-level object is executed and returns a value, then that return value is passed on to scala
.
Written by Martin Odersky and other members of the Scala team.
Report bugs to <scala@listes.epfl.ch>
.
This is free software; see the distribution for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sbaz(1), scalac(1), scaladoc(1), scalap(1)