【发布时间】:2013-09-19 16:20:43
【问题描述】:
我已经下载了 Algebird,我想使用这个库在 Scala 解释器 中尝试一些东西。我如何实现这一目标?
【问题讨论】:
-
通常情况下,REPL 提示符下还有一个
:cp命令,但已被破坏;它可能会在 2.11 中回归。
标签: scala interpreter read-eval-print-loop
我已经下载了 Algebird,我想使用这个库在 Scala 解释器 中尝试一些东西。我如何实现这一目标?
【问题讨论】:
:cp 命令,但已被破坏;它可能会在 2.11 中回归。
标签: scala interpreter read-eval-print-loop
这是一个使用 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
或在 macOS 上使用 brew:
brew install ammonite-repl
对于 scala 2.10,您需要使用 oder 版本 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
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`
然后您可以在 Ammonite-REPL 中使用您的库:
import com.twitter.algebird._
import com.twitter.algebird.Operators._
Map(1 -> Max(2)) + Map(1 -> Max(3)) + Map(2 -> Max(4))
...
【讨论】:
运行sbt console 不会导入使用测试范围声明的库。要在 REPL 中使用这些库,请使用
sbt test:consoleQuick
但是,您应该知道,以这种方式启动控制台会跳过编译您的测试源代码。
【讨论】:
libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "3.0.5" % "test", "org.scalacheck" %% "scalacheck" % "1.14.0" % "test")。而且这里没有“测试范围”。
% "test" 正是告诉 SBT 这种依赖关系仅用于测试。如果你忽略它,它将成为一个编译依赖。
当然,你可以使用 scala -cp 来手动管理你的依赖。但这会变得相当乏味,尤其是当您有多个依赖项时。
更灵活的方法是使用sbt 来管理您的依赖项。在search.maven.org 上搜索您要使用的库。例如,Algebird 只需 searching for algebird 即可获得。然后创建一个引用该库的 build.sbt,进入目录并输入 sbt console。它将下载所有依赖项并在类路径上自动启动包含所有依赖项的 scala 控制台会话。
更改诸如 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 来试验新库。
sbt console。
您可以使用 scala 的 -cp 开关将 jars 保留在类路径中。还有其他可用的开关,例如,-deprecation 和-unchecked 用于打开各种警告。通过scala -X... 和scala -Y... 可以找到更多内容。您可以通过scala -help了解更多关于这些开关的信息
【讨论】: