Классы перечисления могут подклассифицировать 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 = 40
sort(Team2,'descend')
ans = First First Second Third
Team1 > Team2
ans = 1 0 0 0
sum(Team1) < sum(Team2)
ans = 1
Когда вы впервые ссылаетесь на класс перечисления, который получают из встроенного класса, такого как, int32
MATLAB передает входные параметры, связанные с представителями перечисления, конструктору суперкласса. Для примера, ссылка на 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 = Yes
logical(a)
ans = 1
The 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.