【问题标题】:How can I make scala's ammonite use scala.util instead of ammonite.util as default for util?如何让 scala 的 ammonite 使用 scala.util 而不是 ammonite.util 作为 util 的默认值?
【发布时间】:2018-02-17 07:05:12
【问题描述】:

在“官方”的 scala REPL 中我可以做到

scala> import util.Random
scala> util.Random.nextInt
res0: Int => -306696783

但在 Ammonite-REPL 中我得到了

@ import util.Random
cmd3.sc:1: object Random is not a member of pack ammonite.util
import util.Random
       ^
Compilation Failed

所以现在我必须使用 scala. 前缀才能使其在 Ammonite 中工作:

@ import scala.util.Random
@ scala.util.Random.nextInt
res1: Int = 503117434

我是 Scala 的新手,所以我不明白为什么 ammonite 会使用与(对我而言)“官方”util 不同的 util,所以如果有人能提供理由,我将不胜感激这个。

更具体地说,有没有办法让util 成为scala.util 而不是ammonite.util

【问题讨论】:

    标签: ammonite


    【解决方案1】:

    并不是说 Ammonite 正在为普通的 Scala 替换一个不同的 util 库,而是 Ammonite 命名空间有它自己的 util 包,其中包含大量特定于 Ammonite 的方法。如果开发人员为他的包选择一个不同的名称,也许会更好,但这不是 Ammonite 特有的问题。这是你会一直遇到的事情。当命名空间发生冲突时,您唯一的选择是完全限定您想要的包名称。所以你实际上做的是一个很好的解决方案。你可以找到更多关于这个here的信息。

    顺便说一句,由于 Ammonite 包中没有 util.Random,因此您可以在导入后执行此操作——我测试过,这是从我的终端剪切和粘贴的:

    @ Random.nextInt res1: Int = 1045964363

    当你确实有方法名冲突时,你可以找到解决方案here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-31
      • 2017-04-30
      • 2017-07-08
      • 2011-05-14
      • 2012-08-01
      • 2015-06-07
      • 2020-03-30
      • 2018-05-21
      相关资源
      最近更新 更多