以前書いたラムダ式ってなに?の続編として今回はラムダ式を使うとどんか感じになるのかを書いていこうと思う。
いくつかの式を用意
前回と同じように、Int型を受け取って何かの処理をし、その結果を最終的に出力する式を用途別に定義してみる。
わかりやすいように加算、減算、乗算、除算の式を定義してみよう。
val add : Int => Unit = x => println(x + 2) val subtract : Int => Unit = x => println(x - 2) val multiply : Int => Unit = x => println(x * 2) val divide : Int => Unit = x => println(x / 2)
全て引数で受け取ったInt型の値に2を足す、引く、掛ける、割るという処理を行なった後、出力するというラムダ式になる。
前回の記事で書き忘れていたがラムダ式は関数と同じなので、もちろん引数を渡し呼び出すことで動かすこともできる。
add(2) 4 subtract(2) 0 multiply(2) 4 divide(2) 1
Listの作成
次はListを作成してみる。
val list = List(1, 2, 3, 4, 5)
ただのInt型の値を5つ持ったListである。
関数型言語では、Listを作成した後そのListに対して処理を加えてロジックを作ることが多い。
foreachを使ってループ処理を行う
先ほど作ったラムダ式とリストを使ってループ処理を行なってみる。
Javaの拡張forループのように、Listの中にある要素数分処理をループさせる方法としてScalaではforeachというものがある。
このforeachにラムダ式を渡すことで、ラムダ式に記述した処理を各要素に適用させた結果を得ることができる。
実際に呼び出してみよう。
list.foreach(add) 3 4 5 6 7
list.foreach(subtract) -1 0 1 2 3
list.foreach(multiply) 2 4 6 8 10
list.foreach(divide) 0 1 1 2 2
このように、リストに対して行いたい処理を用意しておき、そのリストに対して処理を適用させて行き最終的に得たい結果を導き出すというアプローチをして行く。
コメント