Ответ - получить дескриптор функции, как показало @ Пабло .
Обратите внимание, что ваш класс должен быть производным от класса handle
, чтобы он работал правильно (чтобы объект передавался по ссылке).
Рассмотрим следующий пример:
hello.m
classdef hello < handle
properties
name = '';
end
methods
function this = hello()
this.name = 'world';
end
function say(this)
fprintf('Hello %s!\n', this.name);
end
end
end
Теперь мы получаем дескриптор функции-члена и используем ее:
obj = hello(); %# create object
f = @obj.say; %# get handle to function
obj.name = 'there'; %# change object state
obj.say()
f()
Выход:
Hello there!
Hello there!
Однако, если мы определим его как Класс значений вместо этого (измените первую строку на classdef hello
), результат будет другим:
Hello there!
Hello world!