パターンマッチを理解!Scalaでmatchを使う方法【初心者向け】
【プログラミング初心者向け】Scalaでmatchを使う方法を解説。switch文との比較・代入と束縛の違い・8つのパターンなどmatchを使用するうえで欠かせない情報をわかりやすくまとめました!
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
今回は、Scalaでmatchを使う方法を解説します。
Scalaについてそもそもよく分からないという方は、Scalaとは何なのか解説した記事をまずご覧ください。
今回は、Scalaに関する内容だよ!
どういう内容でしょうか?
matchの使い方と書き方について詳しく説明していくね!
お願いします!
Scalaのmatchとは
Scalaのmatchとは、値に対応した処理を使い分ける際に使用します。
Javaのswitch文に似ている説明だと思いますが、実際はswitch文よりも強力な機能を持っています。
Javaでswitch文を使う方法の記事も参考にしてみてください。
Scalaのmatchで言う束縛
Scalaのmatchではbindという考え方があります。
日本語では束縛という言葉で説明されています。
束縛と言うと非常にわかりづらいのですが、代入とも意味が違う重要な考え方です。
ここでは、代入と束縛を比較しながら束縛の概念を説明してみます。
代入とは
変数に値を代入する場合、イメージとしては変数という箱に対して値を入れることです。
束縛とは
変数と値を束縛する場合、変数は値に束縛され、値は変数に束縛されます。
イメージとしては、値に対して変数名でタグ付けする感じです。
タグ付けした変数名は値と繋がった状態で存在します。
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でリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。 |