Ich habe Algebird heruntergeladen und möchte mit dieser Bibliothek einige Dinge im Scala-Interpreter ausprobieren . Wie erreiche ich das?
scala
interpreter
read-eval-print-loop
Harshal Kshatriya
quelle
quelle
:cp
Befehl von der REPL-Eingabeaufforderung, der jedoch fehlerhaft ist. es kann in 2.11 zurückkehren.Antworten:
Natürlich können Sie scala -cp verwenden und Ihre Abhängigkeiten manuell verwalten. Dies wird jedoch ziemlich mühsam, insbesondere wenn Sie mehrere Abhängigkeiten haben.
Ein flexiblerer Ansatz besteht darin, sbt zum Verwalten Ihrer Abhängigkeiten zu verwenden. Suchen Sie auf search.maven.org nach der Bibliothek, die Sie verwenden möchten . Algebird zum Beispiel ist verfügbar, indem Sie einfach nach Algebird suchen . Erstellen Sie dann eine build.sbt, die auf diese Bibliothek verweist, geben Sie das Verzeichnis ein und geben Sie die sbt-Konsole ein . Es werden alle Ihre Abhängigkeiten heruntergeladen und eine Scala-Konsolensitzung mit allen Abhängigkeiten automatisch im Klassenpfad gestartet.
Das Ändern von Dingen wie der Scala-Version oder der Bibliotheksversion ist nur eine einfache Änderung in der Datei build.sbt. Zum Herumspielen benötigen Sie keinen Scala-Code in Ihrem Verzeichnis. Ein leeres Verzeichnis mit nur der Datei build.sbt reicht völlig aus.
Hier ist eine build.sbt für die Verwendung von algebird:
name := "Scala Playground" version := "1.0" scalaVersion := "2.10.2" libraryDependencies += "com.twitter" % "algebird-core" % "0.2.0"
Bearbeiten: Wenn Sie mit einer Bibliothek herumspielen möchten, müssen Sie häufig zuerst die Namespace (s) der Bibliothek importieren. Dies kann auch in der Datei build.sbt automatisiert werden, indem die folgende Zeile hinzugefügt wird:
initialCommands in console += "import com.twitter.algebird._"
quelle
set scalaVersion := "2.9.0-1"
. Ich empfehle dringend, SBT zu verwenden, um mit neuen Bibliotheken zu experimentieren.sbt console
von diesem Verzeichnis aus.Beim Ausführen
sbt console
werden keine Bibliotheken importiert, die mit einem Testbereich deklariert wurden. Starten Sie die Konsole mit, um diese Bibliotheken in REPL zu verwendenSie sollten sich jedoch bewusst sein, dass beim Starten der Konsole das Kompilieren Ihrer Testquellen übersprungen wird.
Quelle: http://www.scala-sbt.org/0.13/docs/Howto-Scala.html
quelle
libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "3.0.5" % "test", "org.scalacheck" %% "scalacheck" % "1.14.0" % "test")
. Und hier gibt es kein "Test Scoping".% "test"
am Ende dieser Zeile ist genau das, was SBT sagt, dass diese Abhängigkeit nur für Tests gilt. Wenn Sie es weglassen, wird es zu einer Kompilierungsabhängigkeit.Sie können den
-cp
Schalter der Scala verwenden , um Gläser auf dem Klassenpfad zu halten. Es gibt auch andere Schalter auch zur Verfügung, zum Beispiel,-deprecation
und-unchecked
auf verschiedene Warnungen für das Drehen. Viele weitere mitscala -X...
und zu findenscala -Y...
. Weitere Informationen zu diesen Schaltern finden Sie mitscala -help
quelle
Dies ist eine Antwort mit Ammonite (im Gegensatz zur Scala REPL) - aber es ist ein so großartiges Werkzeug, dass es erwähnenswert ist.
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
oder mit Brew unter MacOS:
Für Scala 2.10 müssen Sie eine oder Version 1.0.3 verwenden:
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
amm // Displays Loading... Welcome to the Ammonite Repl 2.1.0 (Scala 2.12.11 Java 1.8.0_242)
import $ivy.`com.twitter::algebird-core:0.2.0`
Dann können Sie Ihre Bibliothek innerhalb der Ammonite-REPL verwenden:
import com.twitter.algebird._ import com.twitter.algebird.Operators._ Map(1 -> Max(2)) + Map(1 -> Max(3)) + Map(2 -> Max(4)) ...
quelle