Как сделать так, чтобы аммонит в scala использовал scala.util вместо ammonite.util по умолчанию для util?
В "официальном" скале 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.
префикс, чтобы заставить это работать в Аммоните:
@ import scala.util.Random
@ scala.util.Random.nextInt
res1: Int = 503117434
Я немного новичок в Scala, так что я не понимаю, зачем аммониту использовать другой util
чем (для меня) "официальный" util
, поэтому я был бы признателен, если кто-нибудь может предоставить обоснование для этого.
А конкретнее, есть ли способ сделать util
быть scala.util
вместо ammonite.util
?
1 ответ
Это не значит, что аммонит заменяет другой util
библиотека для обычного Scala, это то, что пространство имен Ammonite имеет свой собственный util
пакет, в котором есть целый ряд методов, характерных для аммонита. Возможно, было бы лучше, если бы разработчик выбрал другое название для своего пакета, но это не проблема, специфичная для Ammonite. Это то, с чем вы столкнетесь все время. Когда происходит столкновение пространств имен, единственный вариант - полностью указать имя пакета для того, которое вам нужно. Итак, что вы на самом деле сделали, это прекрасное решение. Вы можете найти больше об этом здесь.
И между прочим, так как утилита отсутствует. Случайно в пакете Ammonite вы можете сделать это после импорта - я проверил, и это вырезка и вставка из моего терминала:
@ Random.nextInt
res1: Int = 1045964363
Когда у вас действительно есть столкновение имен методов, вы можете найти решение здесь