Представителями перечисления являются образцы класса перечисления. Можно назначить представителей перечисления переменным и сформировать массивы представителей перечисления. Если класс перечисления происходит от суперкласса, можно заменить представителя перечисления образца суперкласса.
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 Tuesday
MATLAB соединяет 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