2013-05-01から1日間の記事一覧

関数について

関数定義 通常はメソッドとして宣言される。 def 関数名[型パラメータ](引数名:引数の型名,……):返り値 = 関数本体 たとえば、 def sum(x:Int, y:Int) = x + y 関数リテラル 変数に代入可能。メソッドの引数としても。 (変数名:型名,……) => 関数本体 たとえば…

Scala流ダックタイピング

rubyの例。 def execute_with_log(f) puts "start" f.execute() puts "end" end って定義しておけば、引数にはexecuteメソッドを持つクラスのオブジェクトはなんでも渡せる。 Javaではこれは実現できなくて、引数で宣言した型(もしくはインタフェース)のオ…

部分適用とカリー化

部分適用 まず普通の関数。 def sum(a:Int, b:Int, c:Int) = a + b + c val result = sum(1,3,5) // 9 コレをこんなふうに出来る。第三引数を5に固定。 val sum2 = sum(_:Int, _:Int, 5) val result = sum2(1,3) // 9 カリー化 引数が元の関数の最初の引数で…