2011年5月14日

Scala 2.9.0 final インストール

インストール

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に対応したバイナリはリリースされてないが、ソースを直接取得コンパイルすれば動作する。

blog comments powered by Disqus