Классы перечисления могут содержать встроенные классы 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 =
1 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.