読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

関数を返す関数を作る

Scala

ScalaByExample - Chapter 5.2 Curryingより。関数を戻り値として返す関数を作ってみます。

  • 引数で渡す場合と同様に、戻り値型を「<仮引数名>:<引数型..> => <戻り値型>」とすることで関数を返すことを示します。
  • 後は戻り値として関数を返せばOK
// 関数を返す関数の定義
// 戻り値型を「<引数型..> => <戻り値型>」とする。(引数で渡すときと一緒)
def sum( i:int ):(int)=>int = { 
    def _sum( j:int ) = i+j
    _sum
}

println( sum(3)(5) ) // 8

// 変数や定数で覚えておくこともできる
var sumVar = sum(3)
val sumVal = sum(3)

println( sumVar(5) ) // 8
println( sumVal(5) ) // 8

実行結果です。

8
8
8

↓とすることでも「sum(3)(5)」と呼び出せる関数を定義できます。

// ↓とすることでも「sum(3)(5)」と呼び出せる関数を定義できる。
// 関数は返してないけど。
def sum( i:int )( j:int ):int = { 
    i+j
}
println( sum(3)(5) ) // 8

実行結果です。

8