読者です 読者をやめる 読者になる 読者になる

Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

Scalaで関数を引数に取る関数リテラルを噛み砕いてみた

Guide to ScalaーScalaプログラミング入門

Guide to ScalaーScalaプログラミング入門

この著者の方はクラスメソッド社の方なのね。またギョッパー社や。あの会社、人材豊富すぎやで。

で、上記の本に書いてあったこのサンプル。一見しただけで混乱したので、噛み砕いてみた。関数を引数に取る関数リテラル

  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行目。

あたまがこんらんする。慣れるまで時間かかる。