У меня есть код от коллеги, и я хочу добавить кеширование в один из методов класса без изменения исходного кода. Я думаю, мне следует просто перегрузить эту функцию и вызвать запомненную версию функции суперкласса. Пример:
Am
classdef A < handle
methods
function res = foo(obj, arg)
disp('class A')
res = arg; % expensive calculation
end
end
end
Bm
classdef B < A
methods
function obj = B()
fn = @foo@A;
obj.foo_m = memoize(fn);
end
function res = foo(obj, arg)
disp('class B')
obj.foo_m(arg)
end
end
end
Теперь он жалуется на недопустимый оператор в строка: fn = @foo@A;
Кроме того, у меня такое чувство, что это также может быть проблемой: { ссылка }
Как решить эту проблему элегантным / прозрачным способом?