scala 関数
scalaは関数がfirst classオブジェクトなので関数を引数に渡したり出来る。
今まで触ってきた言語(coq除く)は型なしの言語ばかりだったので、戸惑うこと多し。
def test(f:(Int => Int) { f(100) } test(x=>x+100) // Int = 200 test{x=>x+200} // Int 300 // 関数リテラルを引数で渡すときは、小括弧でも中括弧でもよいようだ。 //引数なしの関数リテラルを引数に渡したい場合。 def test2(g:(() => Int) { f() } // NG def test2(g: => Int) { f() } // NG def test2(g:(=>Int)) { f() }
Play2の trait Action は、
- Request型変数引数に取ってStatus型変数を返却する関数か、
- 引数を取らずに、Status型変数を返却する関数
を引数に取るようだけども、
宣言の読み方がまだちっとも分かってない。
trait Action[A] extends EssentialAction { ...
の[A]ってなんや。
javaの関数の引数違いのOverrideは
applyメソッドを引数や戻り値を違ったふうに何回も宣言するのか。
applyを特別扱いしてるので
Action.apply(パターン1)は Action(パターン1)と書けるらしいな。