Изтеглих Algebird и искам да изпробвам няколко неща в интерпретатора на Scala с помощта на тази библиотека. Как да постигна това?
Как да използвате библиотеки на трети страни със Scala REPL?
Отговори (4)
Разбира се, можете да използвате scala -cp каквото и да управлявате ръчно вашите зависимости. Но това става доста досадно, особено ако имате множество зависимости.
По-гъвкав подход е да използвате sbt за управление на вашите зависимости. Потърсете библиотеката, която искате да използвате, на search.maven.org. Algebird например е достъпен чрез просто търсене на algebird. След това създайте build.sbt, препращащ към тази библиотека, влезте в директорията и въведете sbt console. Той ще изтегли всичките ви зависимости и ще започне сесия на scala конзола с всички зависимости автоматично на classpath.
Промяната на неща като версията на scala или версията на библиотеката е просто проста промяна в build.sbt. За да си играете, не се нуждаете от scala код във вашата директория. Празна директория само с build.sbt ще се справи добре.
Ето build.sbt за използване на algebird:
name := "Scala Playground"
version := "1.0"
scalaVersion := "2.10.2"
libraryDependencies += "com.twitter" % "algebird-core" % "0.2.0"
Редактиране: често, когато искате да си поиграете с библиотека, първото нещо, което трябва да направите, е да импортирате пространството(ята) от имена на библиотеката. Това също може да се автоматизира в build.sbt чрез добавяне на следния ред:
initialCommands in console += "import com.twitter.algebird._"
set scalaVersion := "2.9.0-1"
. Силно препоръчвам използването на SBT за експериментиране с нови библиотеки.
- person Giorgos Keramidas; 15.09.2013
sbt console
от тази директория.
- person Rüdiger Klaehn; 29.06.2016
Изпълнението на sbt console
няма да импортира библиотеки, декларирани с тестов обхват. За да използвате тези библиотеки в REPL, стартирайте конзолата с
sbt test:consoleQuick
Трябва да знаете обаче, че стартирането на конзолата по този начин пропуска компилирането на вашите тестови източници.
Източник: http://www.scala-sbt.org/0.13/docs/Howto-Scala.html
libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "3.0.5" % "test", "org.scalacheck" %% "scalacheck" % "1.14.0" % "test")
. И тук няма „обхват на теста“.
- person Ashwin; 15.05.2019
% "test"
в края на този ред е точно това, което казва на SBT, че тази зависимост е само за тестове. Ако го оставите, той ще се превърне в зависимост от компилиране.
- person Zoltán; 17.05.2019
Можете да използвате превключвателя -cp
на scala, за да запазите jar в пътя на класа. Налични са и други превключватели, например -deprecation
и -unchecked
за включване на различни предупреждения. Много други могат да бъдат намерени с scala -X...
и scala -Y...
. Можете да намерите повече информация за тези превключватели с scala -help
Това е отговор, използващ Ammonite (за разлика от Scala REPL) - но е толкова страхотен инструмент, който си струва да се спомене.
- Можете да го инсталирате с една подложка като:
sudo sh -c '(echo "#!/usr/bin/env sh" && curl -L https://github.com/lihaoyi/Ammonite/releases/download/2.1.2/2.13-2.1.2) > /usr/local/bin/amm && chmod +x /usr/local/bin/amm' && amm
или използване на brew на macOS:
brew install ammonite-repl
За scala 2.10 трябва да използвате по-стара версия 1.0.3:
sudo sh -c '(echo "#!/usr/bin/env sh" && curl -L https://github.com/lihaoyi/Ammonite/releases/download/1.0.3/2.10-1.0.3) > /usr/local/bin/amm && chmod +x /usr/local/bin/amm' && amm
- Стартирайте Ammonite във вашия терминал:
amm
// Displays
Loading...
Welcome to the Ammonite Repl 2.1.0 (Scala 2.12.11 Java 1.8.0_242)
- Използвайте в импортирането на ivy, за да импортирате вашата библиотека от 3-та част:
import $ivy.`com.twitter::algebird-core:0.2.0`
След това можете да използвате вашата библиотека в Ammonite-REPL:
import com.twitter.algebird._
import com.twitter.algebird.Operators._
Map(1 -> Max(2)) + Map(1 -> Max(3)) + Map(2 -> Max(4))
...
:cp
от подканата REPL, но тя е повредена; може да се върне през 2.11. - person som-snytt   schedule 15.09.2013