Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

ScalaでSeqの先頭と中間と最後をパターンマッチで取り出すには+:と:+を使うと良い

こういうSeqがあるとする。

val lis = Seq(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

これの先頭要素と、最後の要素、そしてどちらでもない中間の要素を取り出したい。

素朴にやると、headlastとを使って、slice(1, lis.size)を使うことになるが、これをパターンマッチでやりたい。

実はScalaではルートのパッケージオブジェクトに+::+というextractorが定義されているので、以下のように書けるのだ:

lis match {
  case head +: mid :+ last => s"head is $head, mid contains ${mid.size} elems, last is $last"
} // => "head is 1, mid contains 8 elems, last is 10"

さらに制約を加えたければifキーワードを使えばよい。

この情報はStackOverflowから得られた。便利なことだ。

stackoverflow.com

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?