scala sbt控制台中的预定义例程?

时间:2014-01-14 14:31:17

标签: scala sbt

我最近在编写scala,使用sublimetext编写* .scala并在另一个窗口中运行sbt。

当我使用sbt控制台进行调试时,每次我需要手动导入包并执行例程。

重新编译并重新启动控制台后,一次又一次地重复复制代码真的很烦人。

我想知道有没有办法设置预定义的环境来手动完成?

我想知道的另一个问题是在控制台REPL我可以通过初始字符自动完成行吗?例如,在python IDLE中,可以使用Alt + p来搜索历史记录。这真的很方便。

2 个答案:

答案 0 :(得分:6)

初始命令

您可以将此行添加到build.sbt

initialCommands in console := "import scalaz._, Scalaz._"

结果:

$ sbt console
[info] Starting scala interpreter...
[info]
import scalaz._
import Scalaz._
Welcome to Scala version 2.10.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_45).
Type in expressions to have them evaluated.
Type :help for more information.

scala>

REPL自动完成

您可以点按Tab键以限制自动完成:

scala> List(1, 2, 3)
res0: List[Int] = List(1, 2, 3)

scala> res0.ap

首先Tab - 自动完成和选项:

scala> res0.apply
apply         applyOrElse

第二个Tab - 方法签名:

scala> res0.apply
                       def apply(n: Int): A

历史

您可以使用Ctrl+R搜索历史记录(包括之前REPL会话的历史记录)。使用加法Ctrl+R获取下一个结果。

答案 1 :(得分:4)

另外值得注意的是,您也可以将脚本加载到repl中:

$ cat > guessing.txt
import scala.util.Random.nextInt
def guess() {
  val r = nextInt()
  println("I randomly picked %d.".format(r))
}

$ sbt console
scala> :load guessing.txt
Loading guessing.txt...
import scala.util.Random.nextInt
guess: ()Unit

scala> guess
I randomly picked -630907258.

:help是你的朋友。