以这些不同的方式运行scala shell有什么区别?
答案 0 :(得分:33)
SBT与build.sbt
文件定义的特定项目相关联,$ sbt console
将加载与$ scala
相同的REPL环境,但添加了所有项目可用于导入的构建中定义的代码和依赖项。此外,它将使用build.sbt
定义的Scala版本。
例如:
$ scala
scala> import scalaz._
<console>:7: error: not found: value scalaz
import scalaz._
但是使用此build.sbt
:
scalaVersion := "2.11.4"
libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.1.0"
导入成功:
$ sbt console
...
scala> import scalaz._
import scalaz._
该命令加载Scala 2.11.4而不是系统范围的Scala(或PATH
上的任何版本)。
此外,在构建的sbt console
中添加新项目后调用libraryDependencies
将获取它们。
答案 1 :(得分:7)
如果您调用scala,您将获得在操作系统路径上安装的任何scala版本。
如果您调用sbt控制台,则会获得在sbt build(build.sbt)中配置的scala版本,其中包含已在类路径中构建的所有库。
有关详细信息,请参阅this answer。