75

我已经下载了 Algebird ,我想使用这个库在Scala 解释器中尝试一些东西。我如何实现这一目标?

4

4 回答 4

113

当然,您可以使用 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._"
于 2013-09-15T13:28:58.097 回答
16

运行sbt console不会导入使用测试范围声明的库。要在 REPL 中使用这些库,请使用以下命令启动控制台

sbt test:consoleQuick

但是,您应该知道,以这种方式启动控制台会跳过编译测试源。

资料来源:http ://www.scala-sbt.org/0.13/docs/Howto-Scala.html

于 2015-01-21T22:15:53.980 回答
6

您可以使用 scala 的-cp开关将 jars 保留在类路径中。例如,还有其他可用的开关, -deprecation用于-unchecked打开各种警告。更多内容可以通过scala -X...和找到scala -Y...。您可以通过以下方式找到有关这些开关的更多信息scala -help

于 2013-09-15T12:52:51.517 回答
4

这是一个使用Ammonite(与 Scala REPL 相对)的答案——但它是一个非常棒的工具,值得一提。

  1. 您可以使用一个衬垫安装它,例如:
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
  1. 在终端中运行 Ammonite:
amm
// Displays
Loading...
Welcome to the Ammonite Repl 2.1.0 (Scala 2.12.11 Java 1.8.0_242)
  1. 在 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))
...
于 2020-05-13T14:25:58.257 回答