Представителями перечисления являются образцы класса перечисления. Можно назначить представителей перечисления переменным и сформировать массивы представителей перечисления. Если класс перечисления происходит от суперкласса, можно заменить представителя перечисления образца суперкласса.
The WeekDays класс определяет представители перечисления для пяти дней недели.
classdef WeekDays enumeration Monday, Tuesday, Wednesday, Thursday, Friday end end
Создайте объекты WeekDays класс, представляющий определенные дни.
today = WeekDays.Monday; tomorrow = WeekDays.Tuesday;
Переменные today и tomorrow являются объектами WeekDays класс.
The 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, а Weekdays
char метод может выполнить преобразование.
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 TuesdayMATLAB соединяет char вектор к WeekDays представитель перечисления.
class(a)
ans = WeekDays
char ВекторыМожно использовать представителей перечисления вместо 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 векторы, пока 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