Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从scala程序调用scala REPL控制台?_Java_Scala_Read Eval Print Loop_Scala Reflect - Fatal编程技术网

Java 如何从scala程序调用scala REPL控制台?

Java 如何从scala程序调用scala REPL控制台?,java,scala,read-eval-print-loop,scala-reflect,Java,Scala,Read Eval Print Loop,Scala Reflect,我需要在我的Scala应用程序中嵌入Scala REPL功能。我该怎么做?我需要调用哪个Scala方法/类 我看了一下scala.tools.nsc.interpreter包,但不知道怎么做。@som snytt给了我一个提示,我得到了解决方案 import scala.tools.nsc.interpreter._ val lines: List[String] = List("println(\"Hello\")", "println(\"Word\")") val ret: String

我需要在我的Scala应用程序中嵌入Scala REPL功能。我该怎么做?我需要调用哪个Scala方法/类


我看了一下scala.tools.nsc.interpreter包,但不知道怎么做。

@som snytt给了我一个提示,我得到了解决方案

import scala.tools.nsc.interpreter._

val lines: List[String] = List("println(\"Hello\")", "println(\"Word\")")
val ret: String = ILoop.run(lines)
// Verify if all runs OK

// Read stdin
val condition = ...
while (condition) {
  // convert to List[String] 
  val ret: String = ILoop.run(lines)
  // format and print the output
  println(ret)
  // Read stdin again
}

ILoop是REPL,
过程(设置)
是入口点。IMain本身就是解释器,
exploration(line)
是入口点。在2.12中还有单独的
javax.script
用法,
Scripted
。菊石REPL可以提供更好的嵌入体验。