Можно задать константы, к которым можно обратиться по наименованию путем создания класса MATLAB®, который задает постоянные свойства.
Используйте постоянные свойства задать постоянные значения, к которым можно получить доступ по наименованию. Создайте класс с постоянными свойствами путем объявления Constant припишите в блоках свойства. Установка Constant припишите средние значения, что, когда-то инициализированный к значению, заданному в блоке свойства, значение не может быть изменено.
Присвойте любое значение Constant свойство, включая выражение MATLAB. Например:
classdef NamedConst properties (Constant) R = pi/180 D = 1/NamedConst.R AccCode = '0145968740001110202NPQ' RN = rand(5) end end
MATLAB выполняет выражения при загрузке класса. Поэтому значения MATLAB присваивают RN результат одного вызова rand функционируйте и не изменяйтесь с последующими ссылками на NamedConst.RN. Вызов clear
classes причины MATLAB, чтобы перезагрузить класс и повторно инициализировать постоянные свойства.
Обратитесь к постоянному использованию имени класса и имени свойства:
ClassName.PropName
Например, чтобы использовать NamedConst класс, заданный в предыдущем разделе, сошлитесь на константу для степени к преобразованию радиана, R:
radi = 45*NamedConst.R
radi =
0.7854Чтобы создать библиотеку для, постоянные значения, к которым можно получить доступ по наименованию, сначала создайте папку пакета, затем задайте различные классы, чтобы организовать константы. Например, чтобы реализовать набор констант, которые полезны для того, чтобы сделать астрономические вычисления, задайте AstroConstants класс в пакете под названием constants:
+constants/@AstroConstants/AstroConstants.m
Класс задает набор Constant свойства с присвоенными значениями:
classdef AstroConstants properties (Constant) C = 2.99792458e8 % m/s G = 6.67259 % m/kgs Me = 5.976e24 % Earth mass (kg) Re = 6.378e6 % Earth radius (m) end end
Чтобы использовать этот набор констант, сошлитесь на них с полностью определенным именем класса. Например, следующая функция использует некоторые константы, заданные в AstroContants:
function E = energyToOrbit(m,r) E = constants.AstroConstants.G * constants.AstroConstants.Me * m * ... (1/constants.AstroConstants.Re-0.5*r); end
Импорт пакета в функцию избавляет от необходимости повторять имя пакета (см. import):
function E = energyToOrbit(m,r) import constants.*; E = AstroConstants.G * AstroConstants.Me * m * ... (1/AstroConstants.Re - 0.5 * r); end
Если класс задает постоянное свойство со значением, которое является объектом указателя, можно присвоить значения свойствам объектов указателя. Чтобы получить доступ к объекту указателя, создайте локальную переменную.
Например, ConstMapClass класс задает постоянное свойство. Значение постоянного свойства является объектом указателя (containers.Map объект.
classdef ConstMapClass < handle properties (Constant) ConstMapProp = containers.Map end end
Присваивать текущую дату Date ключ, возвратите указатель в постоянное свойство, затем сделайте присвоение с помощью локальной переменной на левой стороне оператора присваивания:
localMap = ConstMapClass.ConstMapProp
localMap('Date') = datestr(clock);Вы не можете использовать ссылку на постоянное свойство на левой стороне оператора присваивания. Например, MATLAB интерпретирует следующий оператор как создание struct названный ConstMapClass с полем ConstMapProp:
ConstMapClass.ConstMapProp('Date') = datestr(clock);Можно присвоить экземпляр класса определения к постоянному свойству. MATLAB создает экземпляр, присвоенный постоянному свойству при загрузке класса. Используйте этот метод только, когда классом определения будет handle класс.
MyProject пример такого класса:
classdef MyProject < handle properties (Constant) ProjectInfo = MyProject end properties Date Department ProjectNumber end methods (Access = private) function obj = MyProject obj.Date = datestr(clock); obj.Department = 'Engineering'; obj.ProjectNumber = 'P29.367'; end end end
Ссылочные данные о свойстве через Constant свойство:
MyProject.ProjectInfo.Date
ans = 18-Apr-2002 09:56:59
Поскольку MyProject класс Handle, можно получить указатель на экземпляр, который присвоен постоянному свойству:
p = MyProject.ProjectInfo;
Доступ к данным в MyProject класс с помощью этого указателя:
p.Department
ans = Engineering
Измените непостоянные свойства MyProject класс с помощью этого указателя:
p.Department = 'Quality Assurance';p указатель на экземпляр MyProject это присвоено ProjectInfo постоянное свойство:
MyProject.ProjectInfo.Department
ans = Quality Assurance
Очистка класса приводит к присвоению нового экземпляра MyProject к ProjectInfo свойство.
clear MyProject
MyProject.ProjectInfo.Department
ans = Engineering
Можно присвоить экземпляр класса определения как значение по умолчанию свойства только, когда свойство объявляется как Constant
Постоянные свойства не поддерживают свойство PreGet или PostGet события. MATLAB выдает предупреждение во время инициализации класса, если вы устанавливаете GetObservable атрибут Constant свойство к true.