2

すべて同じクラスのオブジェクトの配列があります。関数 (クラスのメソッド セクションで定義) を配列内のすべてのオブジェクトに一度に適用することは可能ですか? たとえば、クラス定義は次のとおりです。

classdef myClass
        properties
            x=0;
        end

        methods
            function obj=plus1(obj)
                obj.x=obj.x+1;
            end
        end

    end

これで、クラス myClass のオブジェクト A を作成できます。

A=myClass;

メソッド plus1 を適用します。

A=A.plus1;

ただし、同じクラスのオブジェクトの配列を作成すると:

A(1,10)=myClass;

A の 10 個のオブジェクトに一度に「plus1」を適用することは可能ですか?

何かのようなもの:

A(:)=A(:).plus1;

みんなありがとう :)

4

2 に答える 2

1

plus1メソッドがオブジェクトの配列に対して定義されている限り、機能します。

    methods
        function obj=plus1(objList)
            for obj = objList(:)'
               obj.x=obj.x+1;
            end
        end
    end

がオブジェクトの配列である場合でも、A = plus1(A)orを呼び出すことができるようになりました。A=A.plus1A

于 2013-03-17T16:10:26.417 に答える
1

あなたは使用することができますarrayfun

>> A = arrayfun( @(x) x.plus1, A );
于 2013-03-17T15:50:16.973 に答える