我最近在编写scala,使用sublimetext编写* .scala并在另一个窗口中运行sbt。
当我使用sbt控制台进行调试时,每次我需要手动导入包并执行例程。
重新编译并重新启动控制台后,一次又一次地重复复制代码真的很烦人。
我想知道有没有办法设置预定义的环境来手动完成?
我想知道的另一个问题是在控制台REPL我可以通过初始字符自动完成行吗?例如,在python IDLE中,可以使用Alt + p来搜索历史记录。这真的很方便。
答案 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>
您可以点按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
是你的朋友。