有没有好的库可以在scala(或java)应用程序中嵌入命令提示符
我有一个应用程序,我想有一个提示。如果有帮助的话,这是一个图形数据库实现,我需要一个提示,就像任何其他数据库客户端(MySQL、Postgresql等)一样 到目前为止,我有自己的回复,如:有没有好的库可以在scala(或java)应用程序中嵌入命令提示符,java,scala,console,client,Java,Scala,Console,Client,我有一个应用程序,我想有一个提示。如果有帮助的话,这是一个图形数据库实现,我需要一个提示,就像任何其他数据库客户端(MySQL、Postgresql等)一样 到目前为止,我有自己的回复,如: object App extends Application { REPL ! Read } object REPL extends Actor { def act() { loop { react { case Re
object App extends Application {
REPL ! Read
}
object REPL extends Actor {
def act() {
loop {
react {
case Read => {
print("prompt> ")
var message = Console.readLine
this ! Eval(message)
}
case More(sofar) => {
//Eval didn't see a semicolon
print(" --> ")
var message = Console.readLine
this ! Eval(sofar + " " + message)
}
case Eval(message) => {
Evaluator ! Eval(message)
}
case Print(message) => {
println(message)
//And here's the loop
this ! Read
}
case Exit => {
exit()
}
case _ => {
println("App: How did we get here")
}
}
}
}
this.start
}
这是可行的,但我真的很想了解历史。不需要完成制表符
对一个好的图书馆有什么建议吗?Scala或Java可以工作
为了清楚起见,我不需要REPL来评估我的代码(我用scala就可以做到这一点),也不需要从命令行调用或使用任何东西。当我的客户端应用程序启动时,我正在寻找一个提示,这是我的用户体验。BeanShell做了一些你想做的事情:Scala本身和许多程序使用一个类似于库的REPL。具体来说
我发现了这一点,答案似乎并不乐观。我明白了。这两个博客真的很有帮助 } 用于(ln)的
println(“未来返回:+s”)
案例失败(ex)=>
println(s“由于${ex.getMessage}而导致解释器失败”)
}
}
是的,像readline一样的库正是我想要的。我还找到了gnu readline的jni包装,名为java readline,但我想我会使用JLine。谢谢!
def interprete(code: String) : Future[String] = {
val p = Promise[String]()
Future {
var result = reader.readLine()
p.success(result)
}
writer.write(code + "\n")
writer.flush()
p.future
for (ln <- io.Source.stdin.getLines){
val f = interprete(ln)
f.onComplete {
case Success(s) =>
println("future returned: " + s)
case Failure(ex) =>
println(s"interpreter failed due to ${ex.getMessage}")
}
}