Как мне вызвать метод get в Matlab? - PullRequest
0 голосов
/ 03 сентября 2018
classdef Untitled
enumeration
    M('monday','first day')
    T('tuesday','second day')
end

properties(SetAccess=private)
    name
    description
end

methods
    %constructor
    function obj = Untitled(name, description)
        obj.name = name
        obj.description = description
    end

    %getter
    function name = get.name(obj)
    end

    %getter
    function description = get.description(obj)
    end



end

end

Как я могу вызвать метод get в командном окне после создания экземпляра Untitled? Я новичок в Matlab и не уверен, что это вообще возможно, потому что я прочитал, что геттер и сеттер не могут быть вызваны напрямую?

1 Ответ

0 голосов
/ 03 сентября 2018

Есть несколько проблем с кодом, который вы предоставили. Во-первых, класс перечисления - это особый тип класса в Matlab. Возможно, вы захотите узнать больше о перечислимых классах в целом в Matlab и об их ограничениях .

Если я предполагаю, что вы не пытаетесь создать класс перечисления и удалить эту часть своей функции, следующая проблема заключается в том, что ваши получатели ничего не делают. Вы должны по крайней мере сделать:

function name = get.name(obj)
    name = obj.name
end

Однако, если все, что вы собираетесь сделать, это вернуть значение свойства, вам даже не нужно создавать функцию get. Вот код, который работает:

classdef Untitled

    properties(SetAccess=private)
        name
        description
    end

    methods
        %constructor
        function obj = Untitled(name, description)
            obj.name = name;
            obj.description = description;
        end

    end

end

Тогда вы можете сделать:

myobj = Untitled('myname','mydesc');
myobj.name
myobj.description
...