第1章 命令行

我们的Scala 3之旅,始于命令行。当你按照前言里的指引执行安装操作后,你可能会想要从操作系统的命令行中输入scala来启动REPL——Scala的Read/Eval/Print/Loop。或者,你可能想要创建一个小小的基于文件的“Hello,world”项目,然后编译运行该项目。因为许多人开始接触Scala都是从命令行起步的,所以我们先以此为介绍Scala的起点。

REPL是一个命令行shell,可以把它看作一个小实验室,你可以在这里运行各种小测试来查看Scala和它的一些第三方库是如何工作的。如果你熟悉Java的JShell、Ruby的irb、Python的shell或IPython,或者Haskell的ghci,那么你会发现Scala的REPL与这些都很相似。如图1-1所示,只要在操作系统命令行输入scala就可以启动REPL,然后再输入Scala表达式,接着按下回车键,你就可以在shell中看到表达式计算后的值了。

当你想测试一些Scala代码片段时,REPL是一个绝佳的实验环境。有时候,没必要创建一个完整的项目——你只需要将测试代码放到REPL中进行实验,知道它是怎么工作的就行了。由于REPL是一个非常重要的工具,因此它最重要的功能将在本章的前两个例子中演示。

虽然REPL非常棒,但它并不是你唯一的选项。Ammonite REPL最初是为Scala 2创建的,它比Scala 2 REPL有着更多的功能,包括:

·能从GitHub和Maven仓库中导入代码

·保存和恢复会话的能力

·美化输出

·多行编辑

图1-1:在macOS终端窗口中运行Scala 3 REPL

在写这本书的时候,Ammonite仍在为Scala 3做迁移,但许多重要的功能已经可以使用了。关于如何使用这些功能的例子,请参阅1.3节。

当然,当你真的需要构建Scala项目时,通常会使用像sbt这样的构建工具,这个内容将在第17章中介绍。但如果你想编译和运行一个小型的Scala应用,例如只有一两个文件,你可以用scalac命令编译代码,然后用scala运行,就像在Java中使用javac和java命令那样。这些过程将在1.4节中进行演示。之后,1.6节将展示如何使用java或scala命令来运行打包成JAR文件的应用程序。