我已经在 Java 项目1 中添加了一个 REPL(读取评估打印循环),该项目是使用 maven 构建的。REPL 可以使用脚本启动。相关部分是
declare -r GRADLE_CLASSPATH="$(gradle :minidns-repl:printClasspath --quiet |tail -n1)"
java
-Dscala.usejavacp=true
-classpath "${GRADLE_CLASSPATH}"
scala.tools.nsc.MainGenericRunner
-i minidns-repl/scala.repl
到目前为止,这有效。唯一缺少的可以使 REPL 完美的是选项卡完成。我从Scala那里知道它确实支持这一点。
如何为MainGenericRunner
启用它?
1:随意测试 REPL:
git clone https://github.com/rtreffer/minidns.git
&& cd minidns
&& ./repl`
然后执行 DNS 查询,例如 c.query("wikipedia.org", TYPE.A)
尽管当前的scala repl现在具有自动完成功能,但它运行得不是很好。(这是Som-SNYTT提到的问题)。
如果您需要 repl 中的工作完成,最好的选择是菊石 REPL,它也具有比标准 repl 更多的功能。
注意:我还没有在 2.11.8 中测试选项卡完成,但看起来它们是从头开始重写的,看起来非常有希望。
处理-i
的方式存在一个已知问题,这会破坏完成。
还有一个修复挂起,但我不知道它是否会进入 2.11.8,它也有一个全新的完成功能。