Установка свойства объекта с помощью метода в Matlab - PullRequest
7 голосов
/ 16 марта 2011

Я создаю класс в MATLAB и, хотя у меня мало опыта с объектами, я почти уверен, что смогу установить свойство класса с помощью метода класса. Возможно ли это в MATLAB?

classdef foo
    properties
        changeMe 
    end

    methods
        function go()
          (THIS OBJECT).changeMe = 1;
        end
    end
end

f = foo;
f.go;


t.changeMe;
ans = 1

1 Ответ

10 голосов
/ 16 марта 2011

Да, это возможно. Обратите внимание, что если вы создаете объект значения, метод должен вернуть объект, чтобы изменить свойство (поскольку объекты значения передаются по значению). Если вы создаете объект дескриптора (classdef foo<handle), объект передается по ссылке.

classdef foo
    properties
        changeMe = 0;
    end

    methods
        function self = go(self)
          self.changeMe = 1;
        end
    end
end

Как уже упоминалось выше, вызов метода установки для объекта значения возвращает измененный объект. Если вы хотите изменить объект, вы должны скопировать вывод обратно в объект.

f = foo;
f.changeMe
ans =
   0

f = f.go;

f.changeMe
ans =
   1
...