mustBeMember

Подтвердите, что значение - элемент заданного множества

Синтаксис

Описание

пример

mustBeMember(value,S) выдает ошибку если value не член множества значений, заданного S. Множество значений задано value должно быть чувствительное к регистру, точное совпадение. mustBeMember не возвращает значение.

При использовании mustBeMember как аргумент свойства или функция валидации аргумента функции, гарантируйте, что значение свойства по умолчанию является членом набора.

Эта функция принимает пользовательские объекты, если класс объекта реализует следующий метод:

Примеры

свернуть все

Используйте mustBeMember чтобы подтвердить это, первый вход является членом множества значений, заданного вторым входом.

Подтвердите это вектор символов 'red' член набора векторов символов, 'yellow', 'green', и 'blue'.

A = 'red';
B = {'yellow','green','blue'};
mustBeMember(A,B)
Error using mustBeMember (line 14)
Value must be a member of this set
    'yellow'
    'green'
    'blue'

Валидация перестала работать потому что 'red' не член набора. MATLAB® возвращает сообщение об ошибке, перечисляющее позволенные значения.

Этот класс ограничивает значение свойства к определенному множеству значений.

Значение Prop1 должен быть 'yellow', 'green', или 'blue'.

classdef MyClass
   properties
      Prop1 {mustBeMember(Prop1,{'yellow','green','blue'})} = 'yellow'
   end
end

Значение свойства по умолчанию должно выполнить ограничения, введенные функцией валидации. Поэтому необходимо явным образом присвоить значение по умолчанию, которое является членом набора.

Создайте объект и присвойте значение его свойству.

obj = MyClass
obj.Prop1 = 'red';
Error setting 'Prop1' property of 'MyClass' class:
Value must be a member of this set
    'yellow'
    'green'
    'blue'

Валидация перестала работать потому что 'red' не член набора. MATLAB возвращает сообщение об ошибке, перечисляющее позволенные значения.

Эта функция объявляет два входных параметра. Введите n должен быть скаляр, числовое значение и вход typename должен иметь любой векторы символов single или double.

function r = mbMember(n,typename)
    arguments
        n (1,1) {mustBeNumeric}
        typename {mustBeMember(typename,{'single','double'})} = 'single'
    end
    r = rand(n,typename);
end

Этот вызов функции использует значение в typename это не удовлетворяет требования, заданные с mustBeMember и результаты ошибка.

r = mbMember(5,'int32');
Error using mbMember
Invalid input argument at position 2. Value must be a member of this set:
    'single'
    'double'

Входные параметры

свернуть все

Значение, чтобы подтвердить в виде скаляра или массива одного из следующего:

  • logicalСтрока'char', или любой числовой класс

  • Логический массив, массив строк, cellstr, или числовой массив

  • Классы MATLAB та реализация ismember

При использовании mustBeMember как блок проверки допустимости свойства, этот аргумент должен быть именем свойства, заданным без кавычек.

Пример: PropName {mustBeMember(PropName,{'High','Medium','Low'})} = 'Low'

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string
Поддержка комплексного числа: Да

Множество значений, к который value должен принадлежать в виде любого следующего:

  • logicalСтрока'char', или любой числовой класс

  • Логический массив, массив строк, cellstr, или числовой массив

  • Классы MATLAB та реализация ismember

Пример: Свойство с массивом ячеек char векторы: PropName {mustBeMember(PropName,{'yellow','green','blue'})} = 'blue'

Пример: Свойство с массивом строк: PropName {mustBeMember(PropName,["yellow","green","blue"])} = "blue"

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string
Поддержка комплексного числа: Да

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2017a