オーダーメイドコース
icon
icon

Scalaでenum(列挙型)を使う方法【初心者向け】

【プログラミング初心者向け】Scalaでenum(列挙型)を使う方法を解説。概要・実例・種類(case objectとEnumeration)・書き方(文法)などenumに関する情報をわかりやすくまとめました!

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

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

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

 

 

田島悠介

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

大石ゆかり

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

田島悠介

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

大石ゆかり

お願いします!

 

Scalaのenumとは

Scalaのenumとは列挙型を意味します。

列挙型とは、列挙型は定数のリストを定義する定数の使い方です。

定数とは、一度設定したら内容を変化させることがない変数を意味します。

変数とは、値を格納する箱のようなものです。

リストとは、複数の値を格納する方法で、配列とも呼ばれます。

 

列挙型を使用する実例

使用する可能性がある文字列が限定されている場合、列挙型を使用します。

例えば、年号です。

明治、大正、昭和、平成という年号は、歴史上のものであり変わりません。これらを、変数に入れてしまうと、値が変化してしまいます。

定数に入れてしまうと、年号分の定数を作成する必要があります。

そこで、列挙型で宣言することで、値が変化しない複数のまとまった変数を定義することができます。

 

[PR] 未経験からWebエンジニアを目指す方法とは

Scalaのenumの種類

Scala のenumでは、case object と Enumeration の2種類あります。

Enumerationの方がenumと綴が似ていますが、実際にはcase objectがよく使われます。

case objectがよく使われる理由として、Enumerationでは、パターンマッチの記述漏れチェックが自動で実行されないためです。パターンマッチとは、例えば列挙型の値をに特定の値があるか検索することです。

Scalaのmatchを使用して、列挙型の値を検索した場合を例にして説明してみます。

もし、列挙型で定義した値が10個あり、matchで定義した検索条件値が9個しかない場合、case objectであれば、足りない条件値があることを教えてくれます。

Enumerationの場合には特に教えてくれません。

この点が、Scalaで列挙型を使用する際に、Enumerationではなく、case objectを利用する最大の理由です。

 

ScalaのEnumerationの書き方

基本となる書き方

文法

object オブジェクト名 extends Enumeration {
  val 値1,値2,(省略) = Value
}

解説

1行目のオブジェクト名で、Enumerationとして使用する名称を決めます。

extends EnumerationでEnumerationとして使用できるようにしています。

2行目のval 値1,値2,(省略)で、列挙型の値を設定しています。

Valueの部分で、実際に列挙型を指定する際の指定値を設定しています。

大石ゆかり

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

田島悠介

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

大石ゆかり

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

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

 

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

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

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

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

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

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

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

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