Main Content

mustBeMember

値が指定集合のメンバーであることを検証

説明

mustBeMember(value,S)valueS により指定された値の集合のメンバーでない場合にエラーをスローします。value で指定された値の集合は大文字と小文字を区別した上で完全一致していなければなりません。mustBeMember は値を返しません。

mustBeMember をプロパティまたは関数の引数の検証関数として使用する場合は、プロパティの既定値が集合のメンバーであることを確認してください。

mustBeMember は以下の関数を呼び出して、valueS により指定された値の集合のメンバーであるかどうかを判別します。

クラス サポート: すべての数値クラス、logicalchar、および ismember をオーバーロードする MATLAB® クラス。

すべて折りたたむ

mustBeMember を使用して、1 番目の入力が、2 番目の入力で指定された値の集合のメンバーであることを検証します。

文字ベクトル 'red' が、文字ベクトルの集合 'yellow''green''blue' のメンバーであることを検証します。

A = 'red';
B = {'yellow','green','blue'};
mustBeMember(A,B)
Value must be a member of this set
    'yellow'
    'green'
    'blue'

'red' はこの集合のメンバーでないため、検証は失敗します。MATLAB は許可されている値を示すエラー メッセージを返します。

このクラスは、プロパティ値を特定の値の集合に制限します。

Prop1 の値は、'yellow''green' または 'blue' でなければなりません。

classdef MyClass
   properties
      Prop1 {mustBeMember(Prop1,{'yellow','green','blue'})} = 'yellow'
   end
end

プロパティの既定値は、検証関数により設定された制限に従わなければなりません。そのため、集合のメンバーである既定値を明示的に割り当てなければなりません。

オブジェクトを作成して、プロパティに値を割り当てます。

obj = MyClass
obj.Prop1 = 'red';
Error setting 'Prop1' property of 'MyClass' class. Value must be a member of this set
    'yellow'
    'green'
    'blue'

'red' はこの集合のメンバーでないため、検証は失敗します。MATLAB は許可されている値を示すエラー メッセージを返します。

この関数は、2 つの入力引数を宣言します。入力 n はスカラー数値でなければならず、入力 typenamesingle または double のいずれかの文字ベクトルでなければなりません。

function r = mbMember(n,typename)
    arguments
        n (1,1) {mustBeNumeric}
        typename {mustBeMember(typename,{'single','double'})} = 'single'
    end
    r = rand(n,typename);
end

次の関数の呼び出しは、mustBeMember で定義されている要件を満たさない typename の値を使用しており、エラーになります。

r = mbMember(5,'int32');
Error using mbMember
 r = mbMember(5,'int32');
                ↑
Invalid input argument at position 2. Value must be a member of this set:
    'single'
    'double'

入力引数

すべて折りたたむ

検証する値。スカラーまたは次のいずれかの配列として指定します。

  • logicalstringchar または任意の数値クラス

  • logical 配列、string 配列、cellstr または数値配列

  • ismember を実装する MATLAB クラス

mustBeMember をプロパティ検証として使用する場合、この引数は引用符なしのプロパティ名でなければなりません。

例: PropName {mustBeMember(PropName,{'High','Medium','Low'})} = 'Low'

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell
複素数のサポート: あり

value が属さなければならない値の集合。次のいずれかとして指定します。

  • logicalstringchar または任意の数値クラス

  • logical 配列、string 配列、cellstr または数値配列

  • ismember を実装する MATLAB クラス

例: char ベクトルの cell 配列からなるプロパティ: PropName {mustBeMember(PropName,{'yellow','green','blue'})} = 'blue'

例: string 配列からなるプロパティ: PropName {mustBeMember(PropName,["yellow","green","blue"])} = "blue"

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell
複素数のサポート: あり

ヒント

  • mustBeMember は、プロパティと関数の引数の検証で使用されるように設計されています。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2017a で導入