我已经下载了 Algebird ,我想使用这个库在Scala 解释器中尝试一些东西。我如何实现这一目标?
4 回答
当然,您可以使用 scala -cp 并手动管理您的依赖项。但这变得相当乏味,特别是如果您有多个依赖项。
一个更灵活的方法是使用sbt来管理你的依赖。在search.maven.org上搜索您要使用的库。例如,只需搜索 Algebird 即可获得 Algebird。然后创建一个引用该库的 build.sbt,进入目录并输入sbt console。它将下载所有依赖项并在类路径上自动启动一个包含所有依赖项的 scala 控制台会话。
更改诸如 scala 版本或库版本之类的内容只是 build.sbt 中的简单更改。在你的目录中不需要任何 scala 代码。一个只有 build.sbt 的空目录就可以了。
这是使用algebird的 build.sbt:
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._"
运行sbt console
不会导入使用测试范围声明的库。要在 REPL 中使用这些库,请使用以下命令启动控制台
sbt test:consoleQuick
但是,您应该知道,以这种方式启动控制台会跳过编译测试源。
您可以使用 scala 的-cp
开关将 jars 保留在类路径中。例如,还有其他可用的开关, -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
或在 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
- 在终端中运行 Ammonite:
amm
// Displays
Loading...
Welcome to the Ammonite Repl 2.1.0 (Scala 2.12.11 Java 1.8.0_242)
- 在 ivy import 中使用以导入您的第 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))
...