В этом примере показано, как проверить, что входы и значения свойств, заданные вашим системным 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