1

MATLAB は初めてなので、2 つのプロパティのいずれかが値を変更すると、3 番目のプロパティが自動的に再計算されるクラスを作成しようとしています。

イベントとリスナーはこのために作成されているようですが、基本的な実装のこつがわかりません。

私の最近の試みはこれです

% when property a or b is altered, c will automatically be recalculated

classdef myclass < handle
    properties
        a = 1;
        b = 2;
        c
    end

    events
        valuechange
    end

    methods

        function obj = myclass()
            addlistener(obj,'valuechange', obj.calc_c(obj))
        end

        function set_a(obj, input)
            obj.a = input;
            notify(obj, valuechange)
        end

        function set_b(obj, input)
            obj.b = input;
            notify(obj, valuechange)

        end

        function calc_c(obj)
            obj.c = obj.a + obj.b
        end
    end
end

次のエラーを返します

Error using myclass/calc_c
Too many output arguments.
Error in myclass (line 18)
            addlistener(obj,'valuechange', obj.calc_c(obj)) 

私は何を間違っていますか?

4

1 に答える 1

1

代わりに、c を Dependent として定義して、使用するたびに更新されていることを確認したくありませんか?

このようなもの

classdef myclass < handle
    properties
        a
        b
    end
    properties (Dependent) 
        c
    end

    methods
    function x = get.x(obj)
        %Do something to get sure x is consistent
        x = a + b;
    end
end
于 2013-01-16T13:32:07.933 に答える