超入門=>まだ入門もできていない
とりあえずインストール
windows
- http://www.scala-lang.org/からダウンロード
- ダウンロードしたファイルを解凍
- binにpath通す
わかったこと
変数と定数
変数は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
で実行できている。
う〜んこの辺がいまいちよくわからん。