Scalaのforeachはパターンマッチで書けるのね
val hoge = List(1, 3, 5, 7)
こんなリストがあるとして
順番に要素を出力してみよう。
👻例1
foreachを使うと
hoge.foreach(h => {
println(h)
})
こうなる。
👻例2
これをパターンマッチと再帰的なサムシンでも書けるっぽい。
@tailrec def f(hoge: List[Int]): List[Int] = { hoge match { case h :: fuga => println(h) f(fuga) case _ => List.empty[Int] } }
f(hoge)を呼び出せば例1と同じになる。
何故急にこんなことを書いてみたかというと、
例2にあるcase h :: fuga => の意味が分かった記念。
最初::が要素追加かと思って何をしているのか理解できんかったけど、リストを順番に処理しているのね。
ちなみにここでの再帰処理を図におこすとこんな感じだと思う!

Scalaのパターンマッチはとにかく強いらしい…?