以下の内容はhttps://blog.3qe.us/entry/2023/05/06/024015より取得しました。


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




以上の内容はhttps://blog.3qe.us/entry/2023/05/06/024015より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14