Вы можете задать доступ к набору свойств или получить методы доступа для динамических свойств, не создавая дополнительных методов класса. Общие сведения об использовании методов доступа см. в разделе Методы доступа к свойствам.
Используйте следующие шаги для создания метода доступа к свойствам:
Задайте функцию, которая реализует операции, которые вы хотите выполнить, прежде чем произойдет набор свойств или их получение. Эти методы должны иметь следующие сигнатуры: mySet(obj,val)
или val = myGet(obj)
Получите соответствующее meta.DynamicProperty
динамического свойства объект.
Назначьте указатель на функцию, ссылающийся на ваш набор или получите функцию свойства к meta.DynamicProperty
GetMethod
объекта или
SetMethod
свойство. Эта функция не должна быть методом класса. Вы не можете использовать схему именования, подобную набору
. Вместо этого используйте любое другое допустимое имя функции.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
Вы можете задать и получить значения свойств только из методов доступа к свойствам. Вы не можете вызвать другую функцию из аппарата или получить метод, а затем попытаться получить доступ к значению свойства из этой функции.
Можно назначить тот же указатель на функцию для набора или получить метод с несколькими динамическими свойствами. MATLAB передает только объект и значение назначенной функции набора.
Ссылка или назначение свойству из его набора или метод get не вызывает набор или метод get снова. Поэтому, если вы используете указатель на ту же функцию для нескольких динамических свойств, эта функция не вызывается при доступе к любому из этих свойств из этой функции.