Классы перечисления могут подклассифицировать MATLAB® встроенные классы. Получение класса перечисления из встроенных классов полезно для расширения полезности представителей перечисления.
Перечисления наследуют функциональность от встроенного класса.
Числовое или логическое значение можно связать с представителями перечисления.
Для получения дополнительной информации о классах перечисления смотрите Задать классы перечисления.
Примечание
Классы перечисления, выведенные из встроенных числовых и логических классов, не могут определять свойства.
Если класс перечисления подклассифицирует встроенный числовой класс, подкласс наследует упорядоченное расположение и арифметические операции, которые можно применить к перечисленным именам.
Для примера, Results классы подклассы int32 встроенный класс. Этот класс связывает целочисленное значение с каждым из четырёх представителей перечисления - First, Second, Third, и NoPoints.
classdef Results < int32 enumeration First (100) Second (50) Third (10) NoPlace (0) end end
Представитель перечисления наследует методы int32 класс (кроме оператора двоеточия). Используйте эти перечисления, как числовые значения (суммированные, отсортированные, усредненные).
isa(Results.Second,'int32')
ans =
1Для примера используйте имена перечислений вместо чисел, чтобы ранжировать две команды:
Team1 = [Results.First, Results.NoPlace, Results.Third, Results.Second]; Team2 = [Results.Second, Results.Third, Results.First, Results.First];
Выполните int32 операции с этими Results перечисления:
sum(Team1)
ans = 160
mean(Team1)
ans =
40sort(Team2,'descend')ans =
First First Second Third Team1 > Team2
ans =
1 0 0 0sum(Team1) < sum(Team2)
ans =
1Когда вы впервые ссылаетесь на класс перечисления, который получают из встроенного класса, такого как, int32MATLAB передает входные параметры, связанные с представителями перечисления, конструктору суперкласса. Для примера, ссылка на Second
Results представитель, определяемый как:
Second (50)
означает, что MATLAB вызывает:
int32(50)
чтобы инициализировать int32 аспект этого Results объект.
Классы перечисления, которые получают из встроенных числовых и логических классов MATLAB, могут задать несколько имен для базового значения. Первое имя в блоке перечисления с заданным базовым значением является фактическим именем для этого базового значения, а последующие имена являются псевдонимами.
Задайте псевдонимы имен с тем же аргументом конструктора суперкласса, что и фактическое имя:
classdef Bool < logical enumeration No (0) Yes (1) off (0) on (1) end end
Например, фактическое имя образца Bool.off представитель перечисления No:
a = Bool.No
a =
No b = Bool.off
b =
No Фактическое базовое значение, сопоставленное с представителем перечисления, является значением, возвращаемым встроенным суперклассом. Для примера рассмотрим Bool класс, заданный с помощью аргументов конструктора, принадлежащих к double классов:
classdef Bool < logical enumeration No (0) Yes (100) end end
Этот класс выводится из встроенного logical класс. Поэтому базовые значения для представителя перечисления зависят только от того, какое значение logical возвращает, когда передается это значение:
a = Bool.Yes
a =
Yeslogical(a)
ans =
1The FlowRate класс перечисления задает три представителей, Low, Medium, и High.
classdef FlowRate < int32 enumeration Low (10) Medium (50) High (100) end end
Ссылка на образец представителя перечисления:
setFlow = FlowRate.Medium;
Этот оператор заставляет MATLAB вызывать конструктор по умолчанию со значением аргумента 50. MATLAB передает этот аргумент первому конструктору суперкласса (int32(50) в данном случае). Результатом является базовое значение 50 в виде 32-битного целого числа для FlowRate.Medium представитель.
Потому что FlowRate подклассы встроенного числового класса (int32), этот класс не может задать свойства. Однако FlowRate наследует int32 методы, включая метод конвертера. Программы могут использовать конвертер, чтобы получить базовое значение:
setFlow = FlowRate.Medium; int32(setFlow)
ans =
50Если перечисление является подклассом встроенного числового класса, можно преобразовать из встроенных числовых данных в перечисление с помощью имени класса перечисления. Для примера:
a = Bool(1)
a =
YesПеречисленный класс также принимает представители перечисления своего собственного класса как входные параметры:
Bool(a)
ans =
YesКонвертер возвращает объект того же размера, что и во входе:
Bool([0,1])
ans =
No YesСоздайте пустой массив перечисления с помощью empty статический метод:
Bool.empty
ans = 0x0 empty Boolean enumeration.