Можно задать доступ к набору свойств или получить методы доступа для динамических свойств, не создавая дополнительные методы класса. Для получения общей информации об использовании методов доступа см. Методы доступа к свойствам.
Используйте эти шаги, чтобы создать метод доступа свойства:
Задайте функцию, которая реализует операции, которые вы хотите выполнить, прежде чем набор свойств или добираться происходит. Эти методы должны иметь следующие подписи: 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 передает только объект и значение к присвоенной функции множества.
Ссылка или присвоение на свойство из его набора или добираются, метод не вызывает набор или получает метод снова. Поэтому, если вы используете указатель на ту же функцию для нескольких динамических свойств, эта функция не вызывается при доступе к любому из тех свойств из этой функции.