kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

ひょっとしたら役に立つかもしれないScala Tips(3) - 無名関数+パターンマッチの略記法

久しぶりのScala Tips。Scalaをそこそこ使っている人でも意外と知らない方が多いようなので、一応。

たとえば、以下のようなコードがあったとする(やや恣意的な例だが):

List("A", 1, 1.0, true, Nil).foreach{e => e match {
  case _: Int => println("Int")
  case _: Double => println("Double")
  case _: String => println("String")
  case _: Boolean => println("Boolean")
  case _ => println("?")
}}

このとき、e => e match { case ... }のようなパターンに関しては専用の略記法が用意されているおり、以下のように書くことができる。このパターンは高階関数を使うときに頻出するため、覚えていて損は無いと思う。

List("A", 1, 1.0, true, Nil).foreach{
  case _: Int => println("Int")
  case _: Double => println("Double")
  case _: String => println("String")
  case _: Boolean => println("Boolean")
  case _ => println("?")
}