2017-09-03 9 views
0

SBTファイルを提供するこのコースラコースのタスクhereでScalaを学習しています。 objsets.zip hereをダウンロードします。それから、私はそれを解凍して入力し、sbtと入力してからconsoleと入力します。コマンドラインでファイルsrc/main/scala/objsets/TweetSet.scalaをロードしようとしましたが、多くのエラーが発生しています。コマンドラインやテキストエディタでSBTの下でプロジェクトの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のScala IDEを使用していますが、私は、Scalaの開発のための私のお気に入りのエディタをVimを使用することを学ぶしたいと思います。私はEclipseを使いにくいと感じています。 So

スカラーファイルをSBTのコマンドラインでスカラーインタプリタにロードするにはどうすればよいですか? Vimのようなテキストエディタ上でスケーラプロジェクトを開発するための便利なツールがいくつか存在しますが、エディタやコマンドラインから離れる必要はありません。


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") 
) 

答えて

2

:loadコピーラインによってREPLラインへのファイルの内容のように見えます。つまり、パッケージを定義しようとすると(REPLでは許可されない)、表示されないものをインポートしようとします。:loadを、 REPL、それは動作します。ほとんどの場合、これはpackage行をimportに置き換えることを意味します。

とにかく:loadを使用する必要はありません。 sbt consoleはクラスパス上にプロジェクトがあるREPLに入れます。 sbt consoleQuickはクラスパスに依存するREPLにあなたを置きます。

2番目の質問では、sbtをバックグラウンドプロセスとして使用することを意味します。あなたの端末エミュレータでは、あなたのファイルにvimを実行する1つのタブがあり、もう1つのタブにはsbtがあります。 sbtのタブで~compileを実行すると、Vimにファイルを保存するたびにコードが再コンパイルされます。これは、入力時にIDEがどのようにコンパイラのエラー/警告を表示するかを再現します。

+0

私は、コマンドラインでデバッガを利用できるかどうか、EclipseのScala IDEを使ってVimで開発するのに便利な '〜run'と'〜compile'を見つけましたか? – hhh

+1

'jdb':Java DeBugger – HTNW

関連する問題