嵌入式Scala REPL 2.10的解释器示例
发布时间:2020-12-16 09:21:26 所属栏目:安全 来源:网络整理
导读:请给出一个代码示例,说明如何在Scala 2.10中以编程方式创建一个嵌入式Scala REPL解释器. (我花了几个小时梳理各种代码废料后,补充了这个问答,以获得一个有效的口译员) 解决方法 示例Repl.scala: import scala.tools.nsc.interpreter._import scala.tools.ns
请给出一个代码示例,说明如何在Scala 2.10中以编程方式创建一个嵌入式Scala REPL解释器. (我花了几个小时梳理各种代码废料后,补充了这个问答,以获得一个有效的口译员)
解决方法
示例Repl.scala:
import scala.tools.nsc.interpreter._ import scala.tools.nsc.Settings object Repl extends App { def repl = new ILoop { override def loop(): Unit = { intp.bind("e","Double",2.71828) super.loop() } } val settings = new Settings settings.Yreplsync.value = true //use when launching normally outside SBT settings.usejavacp.value = true //an alternative to 'usejavacp' setting,when launching from within SBT //settings.embeddedDefaults[Repl.type] repl.process(settings) } 一些笔记 >我选择显示JLineReader(默认)而不是SimpleReader,因为它工作得更好,正确处理箭头键,删除等.JLine确实添加了一个jar依赖. 我发现这最容易通过SBT测试;一个示例build.sbt: name := "Repl" organization := "ExamplesRUs" scalaVersion := "2.10.2" libraryDependencies ++= Seq( "org.scala-lang" % "scala-compiler" % "2.10.2","org.scala-lang" % "jline" % "2.10.2" ) SBT会议示例 > run-main Repl [info] Running Repl Welcome to Scala version 2.10.2 (Java HotSpot(TM) 64-Bit Server VM,Java 1.6.0_37). Type in expressions to have them evaluated. Type :help for more information. e: Double = 2.71828 scala> 2 * e res1: Double = 5.43656 scala> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |