Scala触ってみた
一部で話題になっており、関数型の言語を一度触ってみたかったので、勉強がてら使ってみました。
今回は、チュートリアルを元に、導入と簡単なScalaプログラムの作成、Javaとの連携の方法をまとめます。
Scalaとは
スカラと読むそうです。防御力が上がりそうですね。
JavaやRubyのようなオブジェクト指向言語とLispやHaskellのような関数型言語の中間にある静的型付け関数型言語です。
JVM上で動くので、Javaのライブラリを使うことができ、またコンパイルするとJavaのクラスとして実行することもできます。
導入
Java1.4 以降の環境が必要です。
Scala本体は以下のページからダウンロードできます。現在の最新バージョンは2.7です。
http://www.scala-lang.org/downloads/index.html
Windowsの場合、zipを落としてきて解凍し、binにパスを通して以下のコマンドが実行できればOKです。
C:\>scala -version Scala code runner version 2.7.0-final -- (c) 2002-2008 LAMP/EPFL
プログラムを書いてみる
まずは、お決まりのHello World!から。以下のプログラムをHelloWorld.scalaと名前を付けて保存します。ちなみに日本語を使う場合はUTF-8で保存してください。
object HelloWorld{ def main(args: Array[String]){ println("Hello world!") } }
コマンドプロンプトで以下のコマンドでコンパイル&実行します。
C:\scala>scalac HelloWorld.scala C:\scala>scala HelloWorld Hello world!
Javaとの連携
Javaのパッケージを利用する
Javaのパッケージをインポートするには、
import java.util.List
のような感じで行えます。
同じパッケージ内のものを複数指定する場合は、
import java.util.{List, ArrayList}
のように書けます。
まとめてインポートするときは*ではなく
import java.util._
とアンダーバーを使います。
読み込んだクラスは
var list = new ArrayList[String]() list.add("hoge");
のように違和感なく使うことが出来ます。
またクラスだけでなくメンバメソッドを読み込んで使うことが出来ます。
その他の特徴
- 純粋オブジェクト指向言語なので、関数やJavaのintのようなプリミティブなものもオブジェクトとして扱う
- 文末のコロンは必須ではない
- staticなメンバは存在しない→シングルトンオブジェクトでメンバを定義する
- オーバーライドするときは、明示的にoverride def hoge(){}とする