Для обзора методов доступа свойства см. Методы доступа к свойствам
MATLAB® вызывает метод установки свойства каждый раз, когда значение присвоено свойству.
Вы не можете вызвать методы доступа свойства непосредственно. MATLAB вызывает эти методы когда вы доступ к значениям свойств.
Методы набора свойств имеют следующий синтаксис, где PropertyName
является именем свойства.
Для класса значения:
methods function obj = set.PropertyName(obj,value) ... end
obj
— Возразите, чье свойство присваивается значение
значение
Новое значение, которое присвоено свойству
Функции множества класса значения должны возвратить измененный объект в функцию вызова. Классы 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
Для примера метода набора свойств смотрите Restrict Properties к Определенным Значениям.
Если метод набора свойств существует, MATLAB вызывает его каждый раз, когда значение присвоено тому свойству. Однако MATLAB НЕ вызывает методы набора свойств в следующих случаях:
Значение присвоено свойству из своего собственного метода набора свойств, предотвратить рекурсивный вызов метода установки. Однако присвоения свойства, сделанные из функций, вызванных методом установки, действительно вызывают метод установки.
MATLAB присваивает значение по умолчанию свойству во время инициализации объекта перед функциями конструктора вызывающего объекта.
Когда MATLAB копирует объект значения (любой объект, который не является handle
), MATLAB не вызывает набор или получает метод при копировании значений свойств от одного объекта до другого.
Любое присвоение сделало к значению свойства, которое совпадает с текущим значением, когда атрибутом 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"