内容简介:请给出一个代码示例,说明如何在Scala 2.10中以编程方式创建一个嵌入式Scala REPL解释器. (我花了几个小时梳理各种代码废料后,补充了这个问答,以获得一个有效的口译员)http://stackoverflow.com/questions/18628516/embedded-scala-repl-interpreter-example-for-2-10
请给出一个代码示例,说明如何在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依赖.
>该示例显示如何将值绑定到repl(上面的变量e).
>当我省略settings.Yreplsync.value = true时,REPL挂起并没有用.
>从我的测试,如果usejavacp和embeddedDefaults设置都组合在一起,则会导致错误
我发现这最容易通过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>
http://stackoverflow.com/questions/18628516/embedded-scala-repl-interpreter-example-for-2-10
以上所述就是小编给大家介绍的《嵌入式Scala REPL 2.10的解释器示例》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
现代操作系统(原书第4版)
[荷] Andrew S. Tanenbaum、[荷] Herbert Bos / 陈向群、马洪兵 等 / 机械工业出版社 / 2017-7 / 89.00
Andrew S. Tanenbaum教授编写的教材《现代操作系统》现在已经是第4版了。第4版在保持原有特色的基础上,又增添了许多新的内容,反映了当代操作系统的发展与动向,并不断地与时俱进。 对比第3版,第4版有很多变化。一些是教材中多处可见的细微变化,一些是就某一功能或机制增加了对最新技术的介绍,如增加了futex同步原语、读–复制–更新(Read-Copy-Update)机制以及6级RA......一起来看看 《现代操作系统(原书第4版)》 这本书的介绍吧!