mustBeMember

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

Синтаксис

Описание

пример

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

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

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

Поддержка класса: Все числовые классы, logical, char, и MATLAB® классы та перегрузка ismember.

Примеры

свернуть все

Используйте 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
 r = mbMember(5,'int32');
                ↑
Invalid input argument at position 2. Value must be a member of this set:
    'single'
    'double'

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

свернуть все

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

  • logical, string, 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 | cell
Поддержка комплексного числа: Да

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

  • logical, string, 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 | cell
Поддержка комплексного числа: Да

Советы

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

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

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

Введенный в R2017a