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