インストール
IzPack Installer を利用してインストールする場合は以下。
curl -O http://www.scala-lang.org/downloads/distrib/files/scala-2.9.0.final-installer.jar
java -jar scala-2.9.0.final-installer.jar
MacPorts を利用した方が楽。
sudo port -v selfupdate
sudo port install scala29
ドキュメントもダウンロードしておく。
curl -O http://www.scala-lang.org/downloads/distrib/files/scala-2.9.0.final-devel-docs.tgz
tar xvfz scala-2.9.0.final-devel-docs.tgz
今回はMacPortsでインストールした。
バージョンの選択
MacPorts でインストールしていて scala28 がインストールされている場合はバージョンを選択しておく方が良い。
「scala_select」コマンドを利用する。
# 選択できるバージョンを確認
scala_select -l
# バージョン選択
sudo scala_select scala29
# 確認
which scala
scala -version
scalac -version
新機能
- Parallel Collections 追加
- App Trait 追加
- DelayedInit Trait 追加
- Repl機能向上
- Scala コマンドに実行関連オプション追加
- @strictfp アノテーション追加
- try-catch-finally
- scala.sys と scala.sys.process パッケージ追加
- collectFirst, maxBy, minBy, span, inits, tails, permutations, combinations, subsets 追加
- AnyRef が特化型になった
App Traitの動作確認
サンプル作成はApp Traitは簡単なので、とりあえずApp Traitを動作させてみる。
Echo.scala として以下を作成
object Echo extends App {
println("Echo" + (args mkString " "))
}
# コンパイル
scalac Echo.scala
# 実行
scala Echo hello
# 出力
Echohello
実行時、以下のエラーが発生するかも。
Exception in thread "main" java.lang.RuntimeException: Cannot figure out how to run target: Echo
at scala.sys.package$.error(package.scala:27)
at scala.tools.nsc.GenericRunnerCommand.scala$tools$nsc$GenericRunnerCommand$$guessHowToRun(GenericRunnerCommand.scala:38)
at scala.tools.nsc.GenericRunnerCommand$$anonfun$2.apply(GenericRunnerCommand.scala:48)
at scala.tools.nsc.GenericRunnerCommand$$anonfun$2.apply(GenericRunnerCommand.scala:48)
at scala.Option.getOrElse(Option.scala:109)
at scala.tools.nsc.GenericRunnerCommand.(GenericRunnerCommand.scala:48)
at scala.tools.nsc.GenericRunnerCommand.(GenericRunnerCommand.scala:17)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:33)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:89)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
これは classpath がカレントディレクトリに通ってないため発生する。classpath を明示的に指定。
scala -classpath . Echo hello
実行されるはず。
通常は「SCALA_HOME」環境変数の設定は不要。scala コマンドのあるディレクトリの一つ上を「SCALA_HOME」ディレクトリに自動設定している。
他の機能は使いながら調査する。
Emacs設定
ensime を利用する。
2.9に対応したバイナリはリリースされてないが、ソースを直接取得コンパイルすれば動作する。