См. Перечисления

Образцы классов перечисления

Представителями перечисления являются образцы класса перечисления. Можно назначить представителей перечисления переменным и сформировать массивы представителей перечисления. Если класс перечисления происходит от суперкласса, можно заменить представителя перечисления образца суперкласса.

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  

Похожие темы