我正在学习Scala,它提供了这里文件。我下载它的objsets.zip 这里。然后我解压缩它,结束并输入它,然后输入sbt,然后输入console。我试图在命令行上加载文件src/main/scala/objsets/TweetSet.scala,但是我得到了很多错误。
scala> :load src/main/scala/objsets/TweetSet.scala
Loading src/main/scala/objsets/TweetSet.scala...
<console>:1: error: illegal start of definition
package objsets
^
<console>:10: error: not found: value TweetReader
import TweetReader._
^
import common._
defined class Tweet
<console>:2: error: illegal start of statement (no modifiers allowed here)
override def toString: String =
^本课程使用Eclipse,但我想学习如何将Vim用于Scala开发,这是我最喜欢的编辑器。我发现Eclipse很难使用。所以
如何在SBT下命令行的scala解释器中加载scala文件?在像Vim这样的文本编辑器上开发scala项目,而不必离开编辑器或命令行本身,是否存在一些有利的工具?
SBT文件和这个目录看起来像这个
$ tree src/
src/
├── main
│ └── scala
│ ├── common
│ │ └── package.scala
│ └── objsets
│ ├── TweetData.scala
│ ├── TweetReader.scala
│ ├── TweetSet.scala
│ └── testing.sc
└── test
└── scala
└── objsets
└── TweetSetSuite.scala
7 directories, 6 files
$ cat build.sbt assignment.sbt
name := course.value + "-" + assignment.value
scalaVersion := "2.11.7"
scalacOptions ++= Seq("-deprecation")
// grading libraries
libraryDependencies += "junit" % "junit" % "4.10" % Test
// for funsets
libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"
// include the common dir
commonSourcePackages += "common"
courseId := "bRPXgjY9EeW6RApRXdjJPw"
course := "progfun1"
assignment := "objsets"
assignmentInfo := AssignmentInfo(
key = "6PTXvD99EeWAiCIAC7Pj9w",
itemId = "d1FGp",
premiumItemId = Some("Ogg05"),
partId = "7hlkb",
styleSheet = Some((_: File) / "scalastyle" / "scalastyle_config.xml")
)发布于 2017-09-03 21:08:01
:load逐行将文件的内容复制到REPL中。这意味着您最终会试图定义包(在REPL中是不允许的),然后尝试导入不可见的东西,等等。如果您在一个文件上使用:load,其格式可以被REPL使用,那么它就会工作。在大多数情况下,这意味着将package行替换为import行。
无论如何,没有必要使用:load。sbt console将把您放在一个REPL中,该项目位于其类路径上。sbt consoleQuick将把您放在一个只有类路径上的依赖项的REPL中。
对于第二个问题,您应该使用sbt作为后台过程。在终端模拟器中,将有一个选项卡在文件上运行vim,而在另一个选项卡中,将有sbt。在带有sbt的选项卡中,您可以运行~compile,它每次在Vim中保存文件时都会重新编译代码。这复制了IDE在键入时显示编译器错误/警告的方式。
https://stackoverflow.com/questions/46027760
复制相似问题