Main Content

meta.Validation クラス

パッケージ: meta
スーパークラス: handle

プロパティ検証の記述

説明

このクラスのインスタンスは、クラス定義で指定されたプロパティ検証に関する情報を含みます。meta.Validation クラスでは、クラス定義内の各プロパティに関する次の情報をプログラムによって取得できます。

  • プロパティに適用されるクラスの制限

  • プロパティ値のサイズの要件

  • プロパティ値に適用される検証関数を参照する関数ハンドル

プロパティ検証の詳細については、プロパティ値の検証を参照してください。

プロパティ

すべて展開する

プロパティに適用されるクラスの制限。meta.class オブジェクトとして指定します。プロパティ定義にクラスの制限が含まれない場合、MATLAB® はこのプロパティを 0 行 0 列の meta.class オブジェクトに設定します。

属性:

GetAccesspublic
SetAccessprivate

プロパティ値の次元。meta.ArrayDimension タイプの異種混合配列、あるいは meta.FixedDimension タイプまたは meta.UnrestrictedDimension タイプの配列として指定します。プロパティ定義でプロパティの次元が指定されていない場合、MATLAB はこのプロパティを 1 行 0 列の meta.ArrayDimension 配列に設定します。

属性:

GetAccesspublic
SetAccessprivate

検証関数。各検証関数を参照する関数ハンドルの cell 配列として指定します。プロパティが検証関数を使用しない場合、MATLAB はこのプロパティを 1 行 0 列の cell 配列に設定します。

属性:

GetAccesspublic
SetAccessprivate

属性

Sealedtrue
HandleCompatibletrue

クラス属性の詳細については、クラスの属性を参照してください。

メソッド

isValidValue

tf = isValidValue(metaValidationObj,value)

値が有効であるかどうかを判別します。このメソッドは、metaValidationObj で検証を記述されているプロパティについて value が有効な値である場合に true を返します。

入力引数

  • metaValidationObj - プロパティの meta.Validation オブジェクト

  • value - 有効性のテスト対象の取り得るプロパティ値。

戻り値

  • true - 値はこのプロパティに対して有効な値です。

  • false - 値はこのプロパティに対して無効な値です。

validateValue

validateValue(metaValidationObj,value)

値が有効かどうかをテストして、無効の場合はエラーをスローします。このメソッドは、metaValidationObj で検証を記述されているプロパティについて value が無効な値である場合にエラーをスローします。エラー メッセージは、実際のオブジェクトのプロパティに値が割り当てられた場合にスローされるものと同じです。

入力引数

  • metaValidationObj - プロパティの meta.Validation オブジェクト

  • value - 有効性のテスト対象の取り得るプロパティ値。

戻り値

なし

ValidationExample クラスは、検証を使用したプロパティを定義します。

classdef ValidationExample
   properties
      Prop (1,:) double {mustBeReal, mustBeGreaterThan(Prop, 10)} = 200;
   end
end

関数 getErrorMessage は、取り得る値が有効であるかどうかを判別し、無効な値の原因を示すエラー メッセージを表示します。

function getErrorMessage(possibleValue)
   mc = ?ValidationExample;
   mp = findobj(mc.PropertyList,'Name','Prop');
   mv = mp.Validation;
   if ~mv.isValidValue(possibleValue)
      try
         mv.validateValue(possibleValue)
      catch errorMessage
         fprintf('This value is not valid because: %s\n',...
            errorMessage.message);
      end
   else
      fprintf('%d is OK\n',possibleValue)
   end
end

バージョン履歴

R2018a で導入