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)。