So erhalten Sie statische member-Variablen im MATLAB-Klassen?

Gibt es eine Möglichkeit zu definieren, statische member-Variablen im MATLAB-Klassen?

Dies nicht funktioniert:

classdef A

    properties ( Static )
        m = 0;
    end
end

Es empfiehlt Stichwort "Konstante" statt "Statische", die Konstante Eigenschaften können nicht geändert werden. Ich möchte eine variable gemeinsam ist allen Objekten der Klasse A und ich möchte in der Lage sein, ändern Sie die variable in Methoden der Klasse A.

Also was ich brauche ist eine private statische member-Variablen. Gibt es eine Möglichkeit, es zu erhalten in MATLAB?


Fand heraus, dass eine Abhilfe getan werden kann, Verwendung von persistenten Variablen in statische member-Funktionen.

In diesem Fall sollten Sie Erben alle Klassen von einer Basisklasse wie folgt.

classdef object < handle

    properties ( GetAccess = 'public', SetAccess = 'private' )
        id
    end

    methods ( Access = 'protected' )
        function obj = object()
            obj.id = object.increment();
        end
    end

    methods ( Static, Access = 'private' )
        function result = increment()
            persistent stamp;
            if isempty( stamp )
                stamp = 0;
            end
            stamp = stamp + uint32(1);
            result = stamp;
        end
    end  
end
es ist nicht dazu gedacht, für die es AFAIK, aber nicht persistent arbeiten?
Ja, ich erhielt einen workaround mit persistenten variable in einer statischen member-Funktion.
Sie sollten poste es als Antwort für andere Interessierte in dieser Frage
persistent nicht zugeordnet werden, getrennt für die Unterklassen obwohl

InformationsquelleAutor Vahagn | 2011-06-23

Schreibe einen Kommentar