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

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

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

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

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"

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте