Обзор методов доступа к свойствам см. в разделе Методы доступа к свойствам
MATLAB® вызывает метод набора свойств каждый раз, когда свойству присваивается значение.
Примечание
Вы не можете вызвать методы доступа к свойствам напрямую. MATLAB вызывает эти методы, когда вы получаете доступ к значениям свойств.
Методы набора свойств имеют следующий синтаксис, где PropertyName
- имя свойства.
Для класса значения:
methods function obj = set.PropertyName(obj,value) ... end
obj
- Объект, свойству которого присваивается значение
value
- Новое значение, присвоенное свойству
Функции набора классов значений должны возвращать измененный объект в вызывающую функцию. Классы Handle не должны возвращать измененный объект.
Для класса handle:
methods function set.PropertyName(obj,value) ... end
Используйте атрибуты метода по умолчанию для методов набора свойств. Методы, определяющие метод набора, не могут задавать атрибуты.
Используйте метод набора свойств, чтобы проверить значение, назначенное свойству. Метод набора свойств может выполнить действия, такие как проверка ошибок на вход значении, прежде чем предпринимать любое действие, необходимое для хранения нового значения свойства.
classdef MyClass properties Prop1 end methods function obj = set.Prop1(obj,value) if (value > 0) obj.Prop1 = value; else error('Property value must be positive') end end end end
Пример метода набора свойств см. в разделе Ограничение свойств определенными значениями.
Если метод набора свойств существует, MATLAB вызывает его каждый раз, когда этому свойству присваивается значение. Однако MATLAB НЕ вызывает методы набора свойств в следующих случаях:
Значение присваивается свойству из его собственного метода набора свойств, чтобы предотвратить рекурсивный вызов метода набора. Однако назначения свойств, выполненные из функций, вызываемых методом set, действительно вызывают метод set.
MATLAB присваивает свойству значение по умолчанию во время инициализации объекта перед вызовом функций конструктора объектов.
Когда MATLAB копирует объект значения (любой объект, который не является handle
), MATLAB не вызывает аппарат или метод get при копировании значений свойств из одного объекта в другой.
Любое назначение, сделанное для значения свойства, которое совпадает с текущим значением, когда свойство AbortSet
атрибут true
. Дополнительные сведения об этом атрибуте см. в разделе Назначение, когда значение свойства не изменено.
Установка значения свойства в конструкторе приводит к вызову метода набора свойств. Для примера, PropertySetMethod
класс определяет метод набора свойств для Prop1
свойство.
classdef PropertySetMethod properties Prop1 = "Default String" end methods function obj = PropertySetMethod( str ) if nargin > 0 obj.Prop1 = str; end end function obj = set.Prop1(obj,str) obj.Prop1 = str; fprintf( 'set.Prop1 method called. Prop1 = %s\n', obj.Prop1 ); end end end
Если вы вызываете конструктор классов без входных параметров, MATLAB не вызывает set.Prop1
способ.
>> o = PropertySetMethod
o = PropertySetMethod with properties: Prop1: "Default String"
Установка значения свойства в конструкторе приводит к вызову метода набора свойств.
>> o = PropertySetMethod("New string")
set.Prop1 method called. Prop1 = New string o = PropertySetMethod with properties: Prop1: "New string"
Если вы копируете объект в другую переменную, MATLAB не вызывает метод набора свойств, хотя объект с правой стороны в назначении использует значение, отличное от значения по умолчанию для свойства:
a = o; a.Prop1
a.Prop1 ans = "New String"