【问题标题】:Import multiple packages in Scala REPL在 Scala REPL 中导入多个包
【发布时间】:2011-08-05 23:31:54
【问题描述】:

在 Scala 中,我经常需要导入多个包含隐式函数和其他实用程序的包,尤其是在 REPL 上:

import scala.collection.JavaConversions._
import scala.collection.{mutable => mut}
import com.myapp.db._
import com.orm._
val con = connectDb(...)
...

我知道在 Scala 中无法导入多个包(尽管包对象范围可能会有所帮助),但是从 REPL 中呢?有没有办法从 REPL 做到这一点而无需大量复制和粘贴?我也尝试使用 :load,但是在那里导入/创建的东西也没有被引入 REPL 的范围。我注意到 :power 命令确实将东西导入作用域。

更新:load 实际上确实工作。

【问题讨论】:

  • 你是什么意思“但是在使用:load时,那里导入/创建的东西也没有被引入REPL的范围”?似乎对我来说适用于导入和对象...
  • 你说得对 - 我错误地尝试了 mut.<TAB> 并认为缺少完成意味着没有导入任何内容。
  • TABTABs Are Broken 的递归缩写。

标签: scala read-eval-print-loop


【解决方案1】:

我不确定通用解决方案,但在 SBT 中可以配置项目,以便控制台 (REPL) 在启动时运行一些初始命令。这是example build.sbt file的摘录,

// set the initial commands when entering 'console' only
initialCommands in console := "import myproject._"

编辑:另一个参考是 Scalala 项目。他们有一个Scala program,它启动一个嵌入式 REPL 并填写必要的导入。有关用法,请参阅他们的quick-start guide

【讨论】:

  • 另外请注意,您可以创建一个脚本,该脚本使用 SBT 来调用具有特定配置的 REPL。请参阅 SBT 0.10 的 wiki 关于脚本。
  • @Daniel Sweet!你知道你是否可以使用 SBT 来启动非 REPL 应用程序?
  • 您可以使用它来启动 Scala 脚本——在我提到的同一页面上有一个示例,即 xsbt wiki 上的脚本页面。
  • initialCommands 不适用于我在问题中指定的方式 - 行被执行,但符号实际上并未引入 REPL 范围。无论如何,将您的答案标记为已接受,因为 :load 实际上 确实 工作。
  • @Yang,关键是你不要通过输入“scala”来启动 REPL,而是输入“sbt console”来启动 REPL。然后你可以导入你在 build.sbt 的依赖项中指定的所有包
猜你喜欢
  • 1970-01-01
  • 2018-06-01
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多