【发布时间】:2016-02-12 19:46:13
【问题描述】:
我想做的是创建一个程序来充当 REPL(比如说 scala repl)和用户。换句话说,用户应该键入命令,而不是直接进入 REPL 执行,而是将它们传递给程序,然后程序在进行一些编辑后将其返回给 REPL 执行,显示答案等等开。
到目前为止,我得到的是一个简单的界面,使用scala.tools.jline.console.ConsoleReader 来显示提示,获取用户输入并在调用get_edited_data后显示结果
我也知道调用“scala”.!ProcessIO,但没有成功。
import java.io.PrintWriter
import scala.sys.process._
import scala.tools.jline.console.ConsoleReader
object Interfere {
def main(args: Array[String]) {
val repl = "scala"
val console = new ConsoleReader
val prompt = "prompt> "
console.setPrompt(prompt)
val out = new PrintWriter(
console.getTerminal.wrapOutIfNeeded(System.out)
)
var line = console.readLine
while (!line.equals("bye")) {
val res = get_edited_data(line)
out.println(s"The answer: $res")
out.flush()
line = console.readLine
}
}
}
我对 ProcessIO 所做的事情如下所示。但这没有意义,因为不可能将当前行作为输入,并且通常可以访问给它的内容。
Process(repl).run(
new ProcessIO(
stdin => line,
stdout => out,
stderr => out
)
)
【问题讨论】:
标签: java scala system-calls