Scalaインタプリタで依存関係を解決する

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

スポンサードリンク

この本を進めていて、途中、Eitherの実装の章でコンパイルが通らなくなった。



エラーの内容はこんな感じ。

Either.scala:16: error: constructor cannot be instantiated to expected type;
 found   : scala.util.Left[A(in class Left),B]
 required: Either[E,A(in trait Either)]
    case Left(value) => Left(value)

traitで実装しているメソッド内に同ファイル内の後ろに定義されているオブジェクトを参照していると、リンクされないようだ。

写経ミスかなと思って確認しても合ってそうだし、書籍のGithub上のコードで試してもダメ。かなり楽しんで進めていただけにちょっとがっかり感が...(^_^;)

コマンドは

$ sbt console

した後、

> scala :load Either.scala

のようにloadしていた。

解決編

どうやら、loadではダメなようで、都度、sbtでcompile & リンクしないといけないらしい。

$ sbt
sbt:errorhandling> console
# 変更したら...
scala > :quit
sbt:errorhandling> compile
sbt:errorhandling> console
scala> TargetObject.methodName()

で試せるようになった。