Члены перечисления являются экземплярами класса перечисления. Можно назначить элементы перечисления переменным и сформировать массивы элементов перечисления. Если класс перечисления является производным от суперкласса, можно заменить элемент перечисления для экземпляра суперкласса.
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, 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 ожидает a 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