验证属性和输入值
此示例说明如何验证为 System object™ 提供的输入和属性值是否有效。
验证单个属性
要独立于其他属性来验证一个属性值,请使用 MATLAB 类属性验证。此示例说明如何指定一个逻辑属性、一个正整数属性和一个必须为三个值之一的字符串属性。
properties UseIncrement (1,1) logical = false WrapValue (1,1) {mustBePositive, mustBeInteger} = 1 Color (1,1) string {mustBeMember(Color, ["red","green","blue"])} = "red" end
验证相互依赖的属性
要验证两个或多个相互依赖的属性的值,请使用 validatePropertiesImpl
。此示例说明如何编写 validatePropertiesImpl
以验证逻辑属性 (UseIncrement
) 为 true
并且 WrapValue
的值大于 Increment
。
methods (Access = protected) function validatePropertiesImpl(obj) if obj.UseIncrement && obj.WrapValue > obj.Increment error("Wrap value must be less than increment value"); end end end
验证输入
要验证输入值,请使用 validateInputsImpl
方法。此示例说明如何验证第一个输入是否为数值。
methods (Access = protected) function validateInputsImpl(~,x) if ~isnumeric(x) error("Input must be numeric"); end end end
完整的类示例
此示例是一个完整的 System object,它显示每种验证语法的示例。
classdef AddOne < matlab.System % ADDONE Compute an output value by incrementing the input value % All properties occur inside a properties declaration. % These properties have public access (the default) properties UseIncrement (1,1) logical = false WrapValue (1,1) {mustBePositive, mustBeInteger} = 10 Increment (1,1) {mustBePositive, mustBeInteger} = 1 end methods (Access = protected) function validatePropertiesImpl(obj) if obj.UseIncrement && obj.WrapValue > obj.Increment error("Wrap value must be less than increment value"); end end % Validate the inputs to the object function validateInputsImpl(~,x) if ~isnumeric(x) error("Input must be numeric"); end end function out = stepImpl(obj,in) if obj.UseIncrement out = in + obj.Increment; else out = in + 1; end end end end
另请参阅
validateInputsImpl
| validatePropertiesImpl