内容简介:请给出一个代码示例,说明如何在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的解释器示例》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
新媒体革命——在线时代的媒体、公关与传播
仇勇 / 电子工业出版社 / 2016-2-1 / CNY 50.00
这既是传统媒体的大裂变年代,也是在线媒体开启的新闻业的黄金时代。 信息流动的新法则不仅改变了媒体业,也在重塑公关、传播和商业的面貌。总之,这个世界的连接方式不仅不再相同,而且这一改变不可逆转。在这个全新重启的在线时代里,无论是信息的获取还是商业本身,信任都变得比以往更重要。 从告别传统媒体的那一刻起,我就有着两个小小的“野心”:一是探寻适合在线时代的媒体生产方式;二是让优质内容有权获得......一起来看看 《新媒体革命——在线时代的媒体、公关与传播》 这本书的介绍吧!