Можно задать константы, к которым можно обратиться по наименованию путем создания класса 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
.