今日の授業

昨日に引き続き、Scala-ja(at Lingr)より、
勉強させていただいております。

可変長引数の使いかた

def hoge(i:int, args:Any*) = { println(args.getClass) }

argsは「scala.runtime.BoxedObjectArray」と言う、
ちょっと特殊(具体的な違いはちょっと不明?)なArrayになる。

Rubyの様なブロックを引数にとる関数の書き方

以下のように

def hoge(f:String=>String) = f("hoge") 

引数が関数ひとつの時には

hoge( (s) => s + "99" )

でもよいし、

hoge { s => s + "99" }

ともかける。

引数が複数ある場合は
以下のように、カリー化を利用して、

def piyo(i:int)(f:int=>int):int = f(i) 

と定義すると、

piyo(10) {i => i * i}

と呼べる

コンストラクタについて

プライマリコンストラクタ(クラス名の後に続くパラメータを引数としてコンストラクタ)以外は
最初に他のコンストラクタの呼び出しが入っていなければならない

型Cast

hoge.asInstanceOf[T]

とするとT型にキャストされる。