主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

プロパティのクラスとサイズの検証

プロパティのクラスとサイズ

MATLAB®は検证关键词呼び出すに,プロパティに対して定义された任意クラスとの検证検证しますますますます。ています.matlabははクラスとサイズの検证の要件を満たす,代入代入の右辺にクラスとサイズ変换を适适适适を

详细については,検証の順序およびプロパティの検証関数を参照してください。

プロパティのサイズの検証

プロパティ名に続いて,プロパティのサイズを行,列,追加次元として指定します。

classdef myclass属性prop(dim1,dim2,...)= defaultvalue结束结束

代入とサイズの検証

このクラスは位置プロパティのサイズを1行3列として定義します。このプロパティに代入される値はそのサイズに準拠しているか,そのサイズに変換可能でなければなりません。

classdefValidateProps特性位置(1,3)结束结束

MATLABによって代入された暗黙的な既定値[0 0 0]は指定サイズに準拠しています。

a = validateprops.
a =具有属性的validateprops:location:[0 0 0]

matlabはスカラーを位置プロパティに代入するときにスカラー拡張を適用します。

一个= ValidateProps;a.Location = 1
a = ValidateProps with properties:

MATLABは列を行に変換してサイズ指定に一致させます。

坳= (1,1,1)
Col = 1 1 1
A.Location = Col.
a = ValidateProps with properties:

サイズ指定でのコロン

サイズ指定でのコロンは,対応する次元の長さに制限がないことを意味します。たとえば,このクラスの标签プロパティにはあらゆる長さの値を代入できます。

classdefValidateProps特性标签(: 1)结束结束
一个= ValidateProps;A.Label ='点击开始'
a = ValidateProps属性:Label: 'Click to Start'

サイズの検証を定義するプロパティへの代入は,同等のインデックス付き配列の代入と同じルールに従います。多次元配列のインデックス付け動作の詳細については,基本的な演算で互換性のある配列サイズを参照してください。

プロパティのクラスの検証

プロパティのクラスを定義すると,コードのプロパティに代入された値をテストする必要性を減らすことができます。プロパティに代入される値は,指定されたクラスであるか,指定されたクラスに変換可能でなければなりません。

プロパティごとに1つのクラスのみを指定できます。mustBeNumericまたはmustBeIntegerのような検証関数を使用して,プロパティをより広範なカテゴリのクラスに制限します。検証関数の詳細については,プロパティの検証関数を参照してください。

任意のMATLABクラス,またはMATLABでサポートされる,Java®クラスおよびCOMクラス以外の外部定義クラスを使用することができます。

プロパティ定義ブロックで,プロパティ名の後にクラス名とオプションのサイズ指定を入力します。

ClassName = defaultValue

既定値を指定しない场合,MATLABは指定クラスの空のオブジェクトをプロパティに代入します。サイズとクラスを定义すると,MATLABは,そのサイズとクラスの要件を満たすプロパティの既定値を作成しようとします。

Matlabは,引数なしでクラス呼び出し呼び出し,既既を作品成しますがが引なしれる场场サイズの返すコンストラクターをしの返すコンストラクター保持しなけれなりませんまたはなりんんまたはまたはまたはまたはまたはまたはまたはまたはまたは,サイズおよびクラスごとの既定値を参照してください。

クラスの検証の使用

propswithclass.クラスは,クラス定义をもつ2つのプロパティを定义します。

  • 数量——値はクラスであるか,に変換可能でなければならない。

  • 今天——値はクラス字符であるか,字符に変换可でなければならなければならなければなら既定値は,关节日期によって返される字符ベクトルです。

classdefpropswithclass.特性数量今天字符=日期结束结束

propswithclass.クラスのオブジェクトを作成します。

p = propswithclass.
p = PropsWithClass with properties: Number: [] Today: '10- september 2016'

matlabはは合成するをプロパティのクラスに変换します。たとえば,今天プロパティに配列约会时间を代入します。

p.Today = [datetime (“现在”),约会时间('明天'));disp(类(p.Today))
ans =字符

约会时间クラスには字符コンバーターがあるため,今天プロパティに配列约会时间を代入できます。

クラスの検证を使使するに非适の値を代入と,エラーがが生物。

p.Number = datetime (“现在”);
设置类“propwithclass”的属性“Number”时出错:数据类型无效。值必须为double或可转换为double。

検証用のユーザー定義クラス

プロパティに代入された値を制御するクラスを定義することができます。列挙クラスを使用すると、名前のあいまい一致でプロパティ値を文字ベクトルまたは string スカラーに設定することができます。

〖图库“

classdef流量枚举低(10)中等(50)高(100)结束结束

クラスには,現在の流量を1分あたりのガロンで返すメソッドがあります。速度プロパティを流量クラスとして定義します。

classdef特性速度流量结束方法功能getGPM (p)如果isempty(p.Speed) gpm = 0;其他的流量= int32 (p.Speed);结束流('流量为:%i GPM\n'、流量);结束结束结束

あいまいなテキストを使使使て速度プロパティを设定できます。

P =泵;p.speed =.'M'
p =泵的性质:速度:介质

プロパティから数値を取得できます。

getGPM (p)
流量为:50 GPM

列挙クラスの详细については,列挙クラスの定義を参照してください。

整数クラスの検証

matlabはは数ののクラスをサポートます(整数を参照)。ただし,プロパティを整数クラスに制限すると,整数のオーバーフローが発生することがあります。結果の値は整数の範囲の最大値または最小値で飽和することがあります。

整数のオーバーがが生物する料,プロパティに代入される値代入ステートメントの右辺からの値は异なる値能能能能ありありありあり

たとえば,プロパティ値をスカラーのuint8に制限するとします。

classdefIntProperty特性价值(1,1) uint8结束结束

数量を价值プロパティに代入すると,数値は実質的にuint8にキャストされますが,範囲外の値としてのエラーにはなりません。

一个= IntProperty;a.Value = -10;disp (a.Value)
0

价值プロパティへの代入は,配列のインデックス付き代入と同等です。代入値がuint8で表せる値の範囲外にある場合,MATLABは値をuint8で表せる最も近い値に設定します。

a = uint8.prement;a(1)= -10
A = uint8 0

整数のオーバーフローが発生する可能性を回避するには,整数クラスではなく意図する範囲に値を制限する検証関数の組み合わせを使用します。

classdefIntProperty特性价值(1,1){MustBeinteger,MustBenonnegative,...MOUNTBELESTHAN(价值,256)}结束结束

uint8クラスによる代入値の変換がないため,検証関数が範囲外の値をキャッチし,適切なエラーをスローします。

一个= IntProperty;a.Value = -10;
设置类“IntProperty”的属性“Value”时出错:Value必须是非负的。

サイズおよびクラスごとの既定値

クラス定義で代入するプロパティの既定値は,指定された検証に準拠しなければなりません。

暗黙的な既定値

クラス定義で既定値を指定しない場合,MATLABは既定値を暗黙的に定義します。この表では,サイズとクラスでMATLABクラスの暗黙的な既定値が決定される方法を示します。

サイズ クラス MATLABで代入される暗黙的な既定値

(m, n)

任意の数値

指定したクラスのゼロのm行n列の配列。

(m,:)または(n):

任意のクラス

指定したクラスのm行0列または0行n列の配列。

(m, n)

字符

空白のm行n列の文字配列。

(m, n)

细胞

各セルに0行0列の双が含まれるm行n列の细胞配列。

(m, n)

结构体

m行n列の结构体

(m, n)

字符串

m行n列の字符串

(m, n)

列挙クラス

クラスで定義された最初の列挙メンバー。

(1,1)

function_handle

実行時エラー——クラスで既定値を定義してください。

非ゼロおよび明示的なサイズの指定に対して暗黙的な既定値を決定するため,MATLABは既定のクラスコンストラクターを呼び出し,コンストラクターの呼び出しから返されるインスタンスを使用して指定されたサイズの配列を作成します。クラスで既定のコンストラクター(つまり,引数なしで呼び出されたコンストラクター)がサポートされない場合,MATLABは検証を含むクラスをインスタンス化するときにエラーをスローします。

指定されたサイズサイズにまたはまたは无制无制()の次元がある場合,MATLABは,無制限次元をゼロに設定した空の配列の既定値を作成します。

異種混合配列の場合,MATLABはgetdefaultscalarement.メソッドを呼び出して既定のオブジェクトを取得します。

関連するトピック