Scalaで関数を引数に取る関数リテラルを噛み砕いてみた
- 作者: 中村修太
- 出版社/メーカー: 中村 修太
- 発売日: 2013/03/02
- メディア: Kindle版
- 購入: 1人 クリック: 27回
- この商品を含むブログ (4件) を見る
この著者の方はクラスメソッド社の方なのね。またギョッパー社や。あの会社、人材豊富すぎやで。
で、上記の本に書いてあったこのサンプル。一見しただけで混乱したので、噛み砕いてみた。関数を引数に取る関数リテラル。
def sample(f:(Int,Int) =>Int,num:Int):Int = f(num,num) println(sample((x,y) => x+y,12)
1行目
- 「f:(Int,Int) =>Int」はsample関数の第1引数
- Int型の引数を2個とって、戻り値がInt。
- という関数を引数にとっている。
- 「num:Int」はsample関数の第2引数
- ):Intは sample関数の戻り値がIntであることを示す。
- = 以降は このsample関数の実体
- 実体は第1引数に定義したf関数に対し、第2引数で与えられた数値を引数に渡す
2行目
というわけで、xとyの2つの引数を与えて加算する関数を第1引数にとり、第引数に12を与えてsample関数を実行してみたのが2行目。
あたまがこんらんする。慣れるまで時間かかる。