Участники перечисления являются экземплярами класса перечисления. Можно присвоить участников перечисления переменным и сформировать массивы участников перечисления. Если класс перечисления выводит от суперкласса, можно заменить участником перечисления экземпляр суперкласса.
Класс WeekDays
задает участников перечисления в течение пяти дней недели.
classdef WeekDays enumeration Monday, Tuesday, Wednesday, Thursday, Friday end end
Создайте объекты класса WeekDays
, представляющего определенные дни.
today = WeekDays.Monday; tomorrow = WeekDays.Tuesday;
Переменные today
и tomorrow
являются объектами класса WeekDays
.
Класс PPM
задает трех участников перечисления. Каждому участнику вывели связанное числовое значение от суперкласса класса.
classdef PPM < double enumeration High (1000) Medium (100) Low (10) end end
Присвойте участника перечисления переменной.
level = PPM.High;
Когда вы заменяете участниками перечисления экземпляры суперкласса, MATLAB® принуждает участника перечисления к суперклассу. Например, добавьте участника перечисления класса PPM
с числовые значения
levelNew = level + 100
levelNew = 1100
Результат имеет класс double
.
whos
Name Size Bytes Class Attributes level 1x1 108 PPM levelNew 1x1 8 double
Можно заменить значениями суперкласса участников перечисления, когда значения соответствуют. Например, передайте одно из числовых значений, заданных в классе перечисления к функции PPMSwitch
.
function PPMSwitch(ppm) switch ppm case PPM.Low disp Low case PPM.Medium disp Medium case PPM.High disp High end end
PPMSwitch(100)
Medium
Можно также использовать участника перечисления непосредственно:
PPMSwitch(PPM.Medium)
Medium
Для получения информации об операциях можно выполнить на экземплярах класса перечисления, видеть Операции на Перечислениях.
Классы перечисления могут преобразовать векторы char
в участников перечисления, когда вектор char
представляет участника перечисления, заданного классом. Это преобразование позволяет вам передать допустимый вектор char
или массив ячеек векторов char
, когда перечисления ожидаются.
Используйте вектор char
вместо прямой ссылки участнику перечисления когда это необходимо, чтобы использовать простые символьные строки, чтобы задать участника перечисления. Однако определение участника перечисления непосредственно устраняет преобразование от char
до перечисления.
Классы перечисления предоставляют функции конвертера использование синтаксиса конструктора.
today = WeekDays('Tuesday');
Поскольку вектор char
, 'Tuesday'
совпадает с участником перечисления WeekDays.Tuesday
, метод char
Weekdays
, может выполнить преобразование.
class(today)
ans = WeekDays
Создайте массив перечисления с помощью конструктора класса WeekDay
и массива ячеек векторов char
.
wd = WeekDays({'Monday','Wednesday','Friday'})
wd = Monday Wednesday Friday
class(wd)
ans = WeekDays
Все векторы char
в массиве ячеек должны соответствовать участнику перечисления, заданному классом.
Приведение char к Перечислениям
MATLAB принуждает векторы char
в участников перечислений, когда доминирующий аргумент является перечислением. Поскольку пользовательские классы являются доминирующими по классу char
, MATLAB пытается преобразовать вектор char
в члена класса перечисления.
Создайте массив перечисления. Затем вставьте вектор char
, который представляет участника перечисления в массив.
a = [WeekDays.Monday,WeekDays.Wednesday,WeekDays.Friday]
a = Monday Wednesday Friday
Добавьте вектор char
к массиву WeekDays
.
a(end+1) = 'Tuesday'
a = Monday Wednesday Friday Tuesday
MATLAB принуждает вектор char
участнику перечисления WeekDays
.
class(a)
ans = WeekDays
Заменение участниками Перечисления символьные Векторы
Можно использовать участников перечисления вместо векторов char
в случаях, где функции требуют векторов char
. Например, этот вызов sprintf
ожидает вектор char
, определяемый спецификатором формата %s
.
sprintf('Today is %s',WeekDays.Friday)
ans = Today is Friday
Автоматическое преобразование классов перечисления к char
позволяет вам использовать участников перечисления в этом случае.
Создайте массивы перечисления:
Конкатенация участников перечисления, использующих []
Присвоение участников перечисления к массиву с помощью индексированного присвоения
Создайте массив перечисления класса WeekDays
путем конкатенации участников перечисления:
wd = [WeekDays.Tuesday,WeekDays.Wednesday,WeekDays.Friday];
Создайте массив перечисления класса WeekDays
индексируемым присвоением:
a(1) = WeekDays.Tuesday; a(2) = WeekDays.Wednesday; a(3) = WeekDays.Friday;
Смешанные участники Перечисления и символьные Векторы
Можно конкатенировать участников перечисления и векторы char
, пока вектор char
представляет участника перечисления.
clear a a = [WeekDays.Wednesday,'Friday']; class(a)
ans = WeekDays
Можно также присвоить вектор char
массиву перечисления:
clear a a(1) = WeekDays.Wednesday; a(2) = 'Friday'; class(a)
ans = WeekDays
Участник по умолчанию класс перечисления является первым участником перечисления, заданным в блоке перечисления. Для класса WeekDays
участником перечисления по умолчанию является WeekDays.Monday
.
classdef WeekDays enumeration Monday, Tuesday, Wednesday, Thursday, Friday end end
MATLAB позволяет присвоение на любой элемент массива, даже если переменная типа массив ранее не существует. Чтобы заполнить неприсвоенные элементы массива, MATLAB использует участника перечисления по умолчанию.
Например, присвойте значение элементу 5 из массива, a
:
clear a
a(5) = WeekDays.Tuesday;
MATLAB должен инициализировать значения элементов массива a(1:4)
с участником перечисления по умолчанию. Результат присвоения на Пятый элемент массива a
:
a
a = Monday Monday Monday Monday Tuesday