Запоминать метод класса в Matlab - PullRequest
1 голос
/ 27 мая 2020

У меня есть код от коллеги, и я хочу добавить кеширование в один из методов класса без изменения исходного кода. Я думаю, мне следует просто перегрузить эту функцию и вызвать запомненную версию функции суперкласса. Пример:

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;

Кроме того, у меня такое чувство, что это также может быть проблемой: { ссылка }

Как решить эту проблему элегантным / прозрачным способом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...