1.3 初识Ammonite REPL

问题

你想开始使用Ammonite REPL并了解它的一些基本功能。

解决方案

Ammonite REPL(https://oreil.ly/jZqSm)的工作方式与Scala REPL一样:只要下载安装然后使用amm命令启动即可。与Scala REPL一样,Ammonite REPL会对Scala表达式求值,并自动给未分配变量名的变量分配变量名:

但Ammonite有许多额外的功能。你可以用以下命令改变shell提示符:

如果把这些Scala表达式放在foo文件夹的Repl.scala文件中:

那么可以使用以下命令将其导入Ammonite REPL中:

然后就可以在Ammonite中使用这些方法了:

类似地,可以使用Ammonite的$cp变量将文件夹foo中的JAR文件simpletest_3.0.0-0.2.0.jar导入amm REPL会话中:

通过import ivy命令,可以从Maven Central(或者其他资源库)导入依赖,并在当前的shell中使用它们:

Ammonite的内置time命令可以计算运行代码所需的时间:

Ammonite的自动补全能力令人印象深刻。只要像下面这样输入表达式,然后在小数点后按<Tab>键即可:

这么做时,Ammonite会显示一长串对于字符串x可用的方法:

因为这里不仅显示了方法名称,还显示了它们的输入参数和返回类型,对于使用者来说很有帮助。

讨论

Ammonite还有很多其他的功能。另一个很有用的功能是,可以像UNIX的.bashrc或者.bash_profile一样提供一个启动配置文件。只要像下面这样将表达式放在~/.ammonite/predef.sc文件中即可:

当启动Ammonite REPL时,提示符将被替换成yo:,而且定义的其他方法也是可用的。

还有一个很有用的功能,即可以保存REPL会话,这将保存之前所有的操作。可以通过下面的代码进行测试,即在REPL中创建一个变量,然后将其保存到会话中:

然后创建另一个变量:

现在重新加载会话,你会看到像期望的那样,remember变量仍然可用而forget变量已经不可用了:

也可以像下面这样通过给会话取名的方式来保存或者恢复多个会话:

关于更多的功能细节,请参阅Ammonite文档(https://ammonite.io/#Ammonite-REPL)。