Методы набора свойств

Обзор методов доступа к свойствам

Обзор методов доступа к свойствам см. в разделе Методы доступа к свойствам

Синтаксис метода набора свойств

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

Пример метода набора свойств см. в разделе Ограничение свойств определенными значениями.

Когда вызывается метод Set

Если метод набора свойств существует, 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"

Похожие темы