Scala 例 実行 Hello, World
インストールはこちら、
Scala 開発環境を準備する - kaishitaeiichiの日記
scalaコマンドにpathをとおすまで。
REPLでかんたんに実行
Javaとちがうのは、コンパイルしなくても、実行できるところ。コンソールにちびっと処理を書いて、実行しながら作業できる。REPLは、read-eval-print loopの略。
$ scala
Welcome to Scala version 2.8.0.final (Java HotSpot(TM) Client VM, Java 1.6.0_21).
Type in expressions to have them evaluated.
Type :help for more information.scala> println("Hello, World!")
Hello, World!scala> 1 + 2
res0: Int = 3scala> "abcd".substring(1,3)
res2: java.lang.String = bcscala> import java.util.ArrayList
import java.util.ArrayListscala> val list = new ArrayList()
list: java.util.ArrayList[Nothing] = []scala> list.add("a")
:8: error: type mismatch;
found : java.lang.String("a")
required: Nothing
list.add("a")
^
scala> val list = new ArrayList[String]()
list: java.util.ArrayList[String] = []scala> list.add("a")
res4: Boolean = truescala> list.contains("a")
res6: Boolean = true
上のリストは、Javaのjava.util.ArrayList。Scalaでは、それとはぜんぜん別のもっと便利なコレクションライブラリ、scala.collection.immutable.Listなどがある。Scala 例 List - kaishitaeiichiの日記
なにげに、ScalaでなくてJavaのAPIもかんたんに実行できるのは、便利かも。自分は、APIの挙動をしらべるときに、かんたんなTestCaseをつくってしまうことのほうが多いが。
余談だが、Rubyにも、irbがあったなー。しばらく前に読んだメタプログラミングRubyでは、オブジェクトの様子を調べるのにirbが大活躍だった。RailsのcosoleコマンドとかirbでActive Record使えて余計、便利に感じた。
余談だが、Visual Studio F#のREPLもかなりいい感じだった。プログラミングF#のはじめにちらっと使い方が書いてある。エディタとREPLをいったりきたりしながら、リズム良く作業できる感じだった。
scalaの場合もREPLは大活躍なんだろうか。
Javaっぽくコンパイルして実行
ファイルをコンパイルして実行することももちろんできる。
Redirecting…
$ vi HelloWorld.scala
object HelloWorld {
def main(args: Array[String]) {
println("Hello, World")
}
}$ scalac HelloWorld.scala
$ ll
合計 36
drwxr-xr-x 2 eiichi eiichi 4096 2011-02-20 22:35 ./
drwxr-xr-x 6 eiichi eiichi 4096 2011-01-26 22:44 ../
-rw-r--r-- 1 eiichi eiichi 605 2011-02-20 22:35 HelloWorld$.class
-rw-r--r-- 1 eiichi eiichi 640 2011-02-20 22:35 HelloWorld.class
-rw-r--r-- 1 eiichi eiichi 97 2011-02-20 22:35 HelloWorld.scala
$ scala HelloWorld
Hello, World
に置き換わっただけなので、Java知っている人はすぐにわかりそう。