exponenta event banner

Задать и получить методы для динамических свойств

Можно определить доступ к набору свойств или получить методы доступа для динамических свойств без создания дополнительных методов классов. Общие сведения об использовании методов доступа см. в разделе Методы доступа к свойствам.

Создание методов доступа для динамических свойств

Чтобы создать метод доступа к свойству, выполните следующие действия.

  • Определите функцию, которая реализует операции, которые вы хотите выполнить до того, как произойдет набор свойств или получение. Эти методы должны иметь следующие подписи: mySet(obj,val) или val = myGet(obj)

  • Получение соответствующего динамического свойства meta.DynamicProperty объект.

  • Назначьте дескриптор функции, ссылающийся на аппарат, или получите функцию свойства для meta.DynamicProperty объект GetMethod или SetMethod собственность. Эта функция не обязательно должна быть методом класса. Нельзя использовать схему именования, например set.PropertyName. Вместо этого используйте любое другое допустимое имя функции.

Предположим, что необходимо создать функцию набора свойств для myCoord динамическое свойство button создан в окне «Определение динамических свойств».

Запишите функцию следующим образом.

function set_myCoord(obj,val)
   if  ~(length(val) == 2) 
      error('myCoords require two values')
   end
   obj.myCoord = val; 
end 

Поскольку button является handle , функция набора свойств не должна возвращать объект в качестве выходного аргумента.

Чтобы получить meta.DynamicProperty объект, используйте handle класс findprop способ:

mb1 = b1.findprop('myCoord');
mb1.SetMethod = @set_myCoord;

MATLAB ® вызывает функцию набора свойств при каждом установке этого свойства:

b1.myCoord = [1 2 3] % length must be two
Error using button.set_myCoord
myCoords require two values

Значения свойств можно задавать и получать только из методов доступа к свойствам. Нельзя вызвать другую функцию из набора или метода get, а затем попытаться получить доступ к значению свойства из этой функции.

Общие методы набора и получения

Можно назначить один и тот же дескриптор функции для набора или получить метод с несколькими динамическими свойствами. MATLAB передает только объект и значение назначенной функции набора.

Ссылка или назначение свойству из его набора или метода get не вызывает набор или метод get снова. Поэтому при использовании дескриптора одной и той же функции для нескольких динамических свойств эта функция не вызывается при обращении к любому из этих свойств из этой функции.

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