![Scala编程(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/446/43738446/b_43738446.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
第4步 编写Scala脚本
虽然Scala被设计为帮助程序员构建大型的软件系统的工具,但是它也适用于脚本编写。脚本不过是一个包含了用@main注解的顶层函数的Scala源文件。将下面的代码放入名称为hello.scala的文件中:
![](https://epubservercos.yuewen.com/9944D7/23020655409775506/epubprivate/OEBPS/Images/42832-00-056-2.jpg?sign=1739421438-mppACMsPOIPq9GvzRRPl7X8eOPwb3hhZ-0-79e93356b8f7c3f5904781e65e99ea2d)
然后执行:
![](https://epubservercos.yuewen.com/9944D7/23020655409775506/epubprivate/OEBPS/Images/42832-00-056-3.jpg?sign=1739421438-w6vUuzjjKpQuQoGs1lIE6hTTYBhDac8q-0-ea9576ef0d9894997d22ab50d4d5058d)
这时你应该能看到另一句问候语:
![](https://epubservercos.yuewen.com/9944D7/23020655409775506/epubprivate/OEBPS/Images/42832-00-056-4.jpg?sign=1739421438-VeQOjlO8pxN4irHGddrUESyg91TaaxL7-0-56702ed2c932222814493ca22fc7185d)
在本例中,用@main注解标记的函数名为m(表示main),不过这个名称并不影响脚本的运行。当你运行一个脚本时,无论其主函数名称是什么,都只需要运行scala命令和包含了主函数的脚本文件即可。
可以通过给主函数添加参数的方式来访问命令行参数。例如,可以通过一个特殊的类型注解为String*的参数来接收字符串类型的命令行参数,String*表示0个或多个类型为String的重复参数(repeated parameters)。[10]在主函数中,参数的类型为Seq[String],表示一个String的序列。Scala序列的下标从0开始,你可以通过圆括号指定下标来访问对应下标的元素。所以,一个名称为steps的Scala序列的第一个元素是steps(0)。可以试试将如下内容录入名称为helloarg.scala的文件中:
![](https://epubservercos.yuewen.com/9944D7/23020655409775506/epubprivate/OEBPS/Images/42832-00-057-1.jpg?sign=1739421438-7mLam4FNqaoFQOCL0kRdBJiFiZDiQJRQ-0-0cd63c0ec777033d265a666b8ca3c52d)
然后执行:
![](https://epubservercos.yuewen.com/9944D7/23020655409775506/epubprivate/OEBPS/Images/42832-00-057-2.jpg?sign=1739421438-JyppicejwBERdoSbGcDp1027vl6obOp5-0-1b8e3641e8d0413ea86f04a576d69612)
在这个命令中,字符串"planet"被当作命令行参数传入,然后在脚本中用args(0)访问。因此你应该会看到这样的效果:
![](https://epubservercos.yuewen.com/9944D7/23020655409775506/epubprivate/OEBPS/Images/42832-00-057-3.jpg?sign=1739421438-D0It1pzglDHec3tWS2gZDO3ZvBviq1vw-0-eea2f54dfee606224b8c705ad3f8b425)
注意这个脚本包含了一个注释。Scala编译器会忽略//和下一个换行符之间的字符,以及/*和*/之间的字符。这个示例还展示了String对象可以用+操作符拼接在一起。是的,正如你预期的那样,表达式"Hello, " + "world!"的运算结果是字符串"Hello, world!"。