以下の内容はhttps://unageanu.hatenablog.com/entry/20080506/1210041422より取得しました。


関数を返す関数を作る

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



以上の内容はhttps://unageanu.hatenablog.com/entry/20080506/1210041422より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14