Задайте свойства класса с постоянными значениями

Определение именованных констант

Можно задать константы, к которым можно обратиться по наименованию путем создания класса MATLAB®, который задает постоянные свойства.

Используйте постоянные свойства задать постоянные значения, к которым можно получить доступ по наименованию. Создайте класс с постоянными свойствами путем объявления Constant припишите в блоках свойства. Установка Constant припишите средние значения, что, когда-то инициализированный к значению, заданному в блоке свойства, значение не может быть изменено.

Присвоение значений к Constant Properties

Присвойте любое значение 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, чтобы перезагрузить класс и повторно инициализировать постоянные свойства.

Referencing Constant Properties

Обратитесь к постоянному использованию имени класса и имени свойства:

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 интерпретирует следующий оператор как создание a 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.

Связанные примеры

Больше о