パターンマッチを理解!Scalaでmatchを使う方法【初心者向け】

【プログラミング初心者向け】Scalaでmatchを使う方法を解説。switch文との比較・代入と束縛の違い・8つのパターンなどmatchを使用するうえで欠かせない情報をわかりやすくまとめました!

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回は、Scalaでmatchを使う方法を解説します。

Scalaについてそもそもよく分からないという方は、Scalaとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのScalaオンライン講座の内容をもとに作成しています。

 

田島悠介

今回は、Scalaに関する内容だよ!

大石ゆかり

どういう内容でしょうか?

田島悠介

matchの使い方と書き方について詳しく説明していくね!

大石ゆかり

お願いします!

 

Scalaのmatchとは

Scalaのmatchとは、値に対応した処理を使い分ける際に使用します。

Javaのswitch文に似ている説明だと思いますが、実際はswitch文よりも強力な機能を持っています。

Javaでswitch文を使う方法の記事も参考にしてみてください。

 

Scalaのmatchで言う束縛

Scalaのmatchではbindという考え方があります。

日本語では束縛という言葉で説明されています。

束縛と言うと非常にわかりづらいのですが、代入とも意味が違う重要な考え方です。

ここでは、代入と束縛を比較しながら束縛の概念を説明してみます。

 

代入とは

変数に値を代入する場合、イメージとしては変数という箱に対して値を入れることです。

 

束縛とは

変数と値を束縛する場合、変数は値に束縛され、値は変数に束縛されます。

イメージとしては、値に対して変数名でタグ付けする感じです。

タグ付けした変数名は値と繋がった状態で存在します。

 

[PR]Scalaで挫折しない学習方法を動画で公開中

Scalaのmatchの種類

Scalaのmatchにはいくつかのパータンがあります。

 

ワイルドカードパターン

ワイルドカードとは、全てを意味する言葉です。

_を指定することで全てのオブジェクトに対してmatchすることが出来ます。

 

変数パターン

先頭が小文字になっている場合に変数としてmatchします。

それ以外は定数とみなします。

変数パターンは全てのパターンにmatchします。

そのため、ワイルドカードパターンがあっても無視され、変数パターンが適用されます。

 

定数パターン

定数パターンはJavaのswitch文に似ています。

 

コンストラクタパターン

コンストラクタとは、インスタンスの初期状態を自由に操ることが出来るものです。

インスタンスとは、クラスをオブジェクト化する際に行う処理です。

インスタンスはクラスを知る上で欠かせない概念です。

コンストラクタパターンはケースクラスと組み合わせて使用することでパラメーター値まで含めてmatchさせることが出来ます。

シーケンスパターン

シーケンス型に対してmatchさせることができ、固定長パターンと任意長パターンがあります。

シーケンス型とは文字列やリストのように順序のある要素の集合である型です。

 

タプルパターン

異なる型を要素にできるタプルもmatchさせることが出来ます。

タプルとは複数の値を組み合わせて1対の要素にします。

 

型付きパターン

型付きパターンはJavaのinstanceof演算子に似ています。

型を判断して処理することが出来ます。

 

パターンガード

パターンガードはパターンを適用しない処理が可能です。

パターンの後ろに if文を使用してガードする条件を書きます。

ガード条件に当てはまる場合のみtrueと判断して処理されます。

trueと判断されなかった場合は例外処理として別の処理が行われます。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

今回は、Scalaでmatchを使う方法を解説しました。

 

オンラインのプログラミングスクールTechAcademyでは、Scalaオンライン講座を開催しています。

Scalaを使ってWebアプリケーションを開発することができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。

この記事を監修してくれた方

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長

開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。

その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。