exponenta event banner

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

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

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

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

MATLAB ® вызывает метод set свойства всякий раз, когда свойству присваивается значение .

Примечание

Нельзя вызывать методы доступа к свойствам напрямую. MATLAB вызывает эти методы при доступе к значениям свойств.

Методы набора свойств имеют следующий синтаксис, где PropertyName - имя свойства.

Для класса значений:

methods 
   function obj = set.PropertyName(obj,value) 
      ...
end
  • obj - Объект, свойству которого присваивается значение

  • value - новое значение, назначенное свойству;

Функции набора классов значений должны возвращать измененный объект вызывающей функции. Классы дескрипторов не должны возвращать измененный объект.

Для класса дескрипторов:

methods 
   function set.PropertyName(obj,value) 
      ...
end

Используйте атрибуты метода по умолчанию для методов набора характеристик. Блок методов, определяющий метод set, не может указывать атрибуты.

Проверить значение набора свойств

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

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 не вызывает метод set или 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"

Связанные темы