超入門=>まだ入門もできていない

とりあえずインストール

windows
  1. http://www.scala-lang.org/からダウンロード
  2. ダウンロードしたファイルを解凍
  3. binにpath通す
mac

macportsがあれば、

  1. sudo port install scala

でかってにやってくれる。
すげー楽。

わかったこと

変数と定数

変数はvar、定数はvalをつけて宣言する

scala> var a = "hoge" 
a: java.lang.String = hoge

scala> val b = "hoge"
b: java.lang.String = hoge
型宣言

変数名 : 型で宣言する。

scala> var piyo : String = "piyo"
piyo: String = piyo
関数

defで宣言して、
関数名(引数) : 戻り値 = 関数本体
とかく。
戻り値の型は省略可
引数の型は省略不可
voidってのはUnit型を使う

scala> def func(str : String) = str.size
func: (String)Int

scala> func(hoge)
res3: Int = 4

これだと、複数行の関数がかけないっぽい。{}使えば書けそうだ。

ちなみにJavaっぽく{}でくくれるのかな?

scala> def func(str : String){
     | str.size
     | }
func: (String)Unit

scala> func(hoge)

できるけど、戻り値がUnitになった。
returnつけてみる。

scala> def func(str : String){       
     | return str.size
     | }
func: (String)Unit

やっぱりUnit。なんかいまいちだな。


無名関数は
=ではなく=>を使う

scala> var func = (str : String) => str.size
func: (String) => Int = <function>

scala> func("hoge")
res11: Int = 4

じゃあ即呼び出しはできるのかな?

scala> ((str : String) => str.size)("hoge")   
res12: Int = 4

おーっ!なんかできるっぽい。

ファイルに書いたやつを読み込ませる。

Javaっぽくかくらしい。
とりあえず、Hello Worldっぽいの。

object Hoge {
    def main(args : Array[String]){
        System.out.println("hogehoge");
    }
}

アクセス修飾子がないのと、
classでなくobjectってとこだ。

これをHoge.scala(クラス名.scala)で保存
scalac Hoge.scala
コンパイルして
scala Hoge
で実行。
なんの違和感なく、JavaのSystem.out.println()が使えてる。

なんか、クラスとか使わないでスクリプトとして読み込む(といえばよいのか?)のも
できるようだ。

def func(str : String) = 
    System.out.println(str.size)
func("hoge")

をtest.scalaで保存して、
scala test.scala
で実行できている。
う〜んこの辺がいまいちよくわからん。