落書きノート

ふと自分が気になった事を書いてます

Scala 高階関数

高階関数です。関数を戻り値として返したりする関数を「高階関数」と呼んでいます。以下の様な感じです。

scala> def getFunc(str:String):(Int,Int) => String = (x:Int,y:Int) => str + (x + y)
getFunc: (str: String)(Int, Int) => String

scala> val f = getFunc("result is ")
f: (Int, Int) => String = <function2>

scala> f(1,2)
res0: String = result is 3

scala> f(5,3)
res1: String = result is 8

String型引数を1つ取り、「Int型引数を2つ取り、String型を返す関数」を返す関数を定義しています。Scalaでは多用される機能なのでちゃんとマスターしておきたいですね。