首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2.10的嵌入式Scala REPL解释器示例

2.10的嵌入式Scala REPL解释器示例
EN

Stack Overflow用户
提问于 2013-09-05 13:35:32
回答 1查看 4.1K关注 0票数 18

请给出一个代码示例,说明如何以编程方式创建在Scala2.10中工作的嵌入式Scala REPL解释器。(我在花了几个小时梳理各种代码碎片以获得一个正常工作的解释器后,添加了这个问答)

EN

回答 1

Stack Overflow用户

发布于 2014-02-26 18:51:45

基于Ben的出色回答,下面是一个帮助器类,用于简化解释器的启动。用法:

代码语言:javascript
复制
Repl.run(("e", "Double", 2.71828), ("pi", "Double", 3.1415))

当你从SBT运行时,它会自动检测并适应。

Repl.scala:

代码语言:javascript
复制
import scala.tools.nsc.interpreter.ILoop
import scala.tools.nsc.Settings
import java.io.CharArrayWriter
import java.io.PrintWriter

object Repl {

  def run(params: (String, String, Any)*) {

    def repl = new ILoop {
      override def loop(): Unit = {
        params.foreach(p => intp.bind(p._1, p._2, p._3))
        super.loop()
      }
    }

    val settings = new Settings
    settings.Yreplsync.value = true

    // Different settings needed when running from SBT or normally
    if (isRunFromSBT) {
      settings.embeddedDefaults[Repl.type]
    } else {
      settings.usejavacp.value = true
    }

    repl.process(settings)
  }

  def isRunFromSBT = {
    val c = new CharArrayWriter()
    new Exception().printStackTrace(new PrintWriter(c))
    c.toString().contains("at sbt.")
  }

}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18628516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档