
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
第4步 编写Scala脚本
虽然Scala被设计为帮助程序员构建大型的软件系统的工具,但是它也适用于脚本编写。脚本不过是一个包含了用@main注解的顶层函数的Scala源文件。将下面的代码放入名称为hello.scala的文件中:

然后执行:

这时你应该能看到另一句问候语:

在本例中,用@main注解标记的函数名为m(表示main),不过这个名称并不影响脚本的运行。当你运行一个脚本时,无论其主函数名称是什么,都只需要运行scala命令和包含了主函数的脚本文件即可。
可以通过给主函数添加参数的方式来访问命令行参数。例如,可以通过一个特殊的类型注解为String*的参数来接收字符串类型的命令行参数,String*表示0个或多个类型为String的重复参数(repeated parameters)。[10]在主函数中,参数的类型为Seq[String],表示一个String的序列。Scala序列的下标从0开始,你可以通过圆括号指定下标来访问对应下标的元素。所以,一个名称为steps的Scala序列的第一个元素是steps(0)。可以试试将如下内容录入名称为helloarg.scala的文件中:

然后执行:

在这个命令中,字符串"planet"被当作命令行参数传入,然后在脚本中用args(0)访问。因此你应该会看到这样的效果:

注意这个脚本包含了一个注释。Scala编译器会忽略//和下一个换行符之间的字符,以及/*和*/之间的字符。这个示例还展示了String对象可以用+操作符拼接在一起。是的,正如你预期的那样,表达式"Hello, " + "world!"的运算结果是字符串"Hello, world!"。