Можно задать константы, на которые можно ссылаться по имени, создав 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 класс задает свойство константы. Значение свойства constant является объектом указатель (a containers.Map объект).
classdef ConstMapClass < handle properties (Constant) ConstMapProp = containers.Map end end
Назначение текущей даты Date , верните указатель из свойства константы, затем выполните назначение с помощью локальной переменной на левой стороне оператора назначения:
localMap = ConstMapClass.ConstMapProp
localMap('Date') = datestr(clock);Вы не можете использовать ссылку на свойство константы в левой части оператора назначения. Например, MATLAB интерпретирует следующий оператор как создание a struct именованные ConstMapClass с полем ConstMapProp:
ConstMapClass.ConstMapProp('Date') = datestr(clock);Можно назначить образец определяющего класса свойству constant. MATLAB создает образец, назначенную свойству constant при загрузке класса. Используйте этот метод только, когда определяющий класс является handle класс.
The 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, можно получить указатель на образец, который назначен свойству constant:
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.