В этом примере показано, как проверить, что входные параметры и значения свойств, данные вашей Системе 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
Этим примером является объект полной системы, который показывает примеры каждого типа синтаксиса валидации.
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