名前付きの値
事前定義名の種類
MATLAB® は次の 2 種類の事前定義名をサポートしています。
定数プロパティ
列挙値
定数プロパティ
さまざまなタイプ (数値、文字列など) に属することのできる定数値に関連した集合が必要な場合は、定数プロパティを使用します。プロパティの Constant
属性を設定することで、定数値をもつプロパティを定義します。特定の値にアクセスする必要があるときは、名前で定数プロパティを参照します。
詳細は、定数値をもつクラス プロパティの定義を参照してください。
列挙値
単一のタイプの値を表現する名前の固定セットを作成するときは列挙値を使用します。クラスごとに再定義することなく、複数の場所でこの新しい型を使用します。
他のクラスから列挙クラスを派生して、スーパークラスの動作を継承することができます。たとえば、double
や int32
のような MATLAB 数値クラスをサブクラス化する列挙クラスを定義した場合、列挙クラスは、MATLAB がこれらのクラスのために定義したすべての算術演算や関係演算を継承します。
色 ('red'
) など、値を表現するために文字列の代わりに列挙を使用すると、次の理由により可読性の良いコードになります。
strcmp
を使用する代わりに==
で列挙メンバーを比較できます。列挙値は型情報を保持しますが、
char
ベクトルは保持しません。たとえば、char
ベクトル'red'
を関数に渡した場合、すべての関数は'red'
が何を意味するかを解釈しなければなりません。red を列挙値として定義すれば、'red'
の実際の値は (たとえば、[1 0 0]
から[.93 .14 .14]
に) 変更でき、色を受け入れるすべての関数を更新する必要がありません。色をchar
ベクトル'red'
として定義した場合は関数を更新する必要があります。
クラス定義内で enumeration
ブロックを作成することで列挙値を定義します。
詳細は、列挙クラスの定義 を参照してください。
列挙値を定義するための手法
列挙値を使用すると、数値または文字列を使用することなく、アプリケーションにとって便利なエンティティを表現する名前を定義できます。すべての列挙値は、等式演算と不等式演算をサポートしています。したがって、switch
、if
、および、isequal
や ismember
のようないくつかの比較関数は、列挙メンバーで使用できます。
列挙クラスの定義は、以降の節で説明するように、アプリケーションにとって最も便利であるような方法で行うことができます。
単純な列挙名
単純な列挙クラスはスーパークラスやプロパティをもちません。これらのクラスは、関連付けられた基本値をもたない関連名のセットを定義します。説明的な名前を使用したい場合、アプリケーションは名前に関連付けられた特定の情報を必要としない場合は、この種の列挙値を使用します。
列挙クラスおよび列挙クラス内でのメソッドの定義節の WeekDays
クラスを参照してください。
組み込みクラスをもつ列挙値の動作
MATLAB 組み込みクラスをサブクラス化する列挙クラスは、これらのクラスの動作のほとんどを継承します。たとえば、double
クラスから派生した列挙クラスは、クラスの変数で使用できる算術演算、関係演算、集合演算を継承します。
列挙値は、スーパークラスでサポートしていても、コロン (:
) 演算子をサポートしません。
メンバー データのプロパティをもつ列挙値
MATLAB 組み込み数値および logical クラスをサブクラス化しない列挙クラスは、プロパティを定義できます。これらのクラスは、各メンバーの一意のプロパティ値を設定するコンストラクターを定義できます。
コンストラクターはプロパティ値に入力引数を保存できます。たとえば、以下のように Color
クラスは Red
列挙メンバーの色を 3 つの値 (Red、Green、Blue) で指定できます。
enumeration
Red (1,0,0)
end