Какова цель нестатических методов в MATLAB? - PullRequest
3 голосов
/ 07 марта 2012

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

Ответы [ 2 ]

5 голосов
/ 07 марта 2012

Для нестатических методов Matlab предоставляет вызывающий класс в качестве первого аргумента. По (личному соглашению) я называю этот аргумент self, который затем эмулирует синтаксис самоссылки. e.g.:

methods (Static = false)
    function output = someMethod(self, arg1, arg2, arg3)
        self.x      %Now refers to the (potentially private) field `x`
        self.someOtherFunction(arg1, arg2) %Calls another method, which may be static or not.
    end
end

В отличие от

methods (Static = true)
    function output = someStaticMethod(arg1, arg2, arg3)
        %There is no input appropriate to the name "self" 
        someOtherFunction(arg1, arg2) %Calls another method, which must be static
    end
end

Для данного объекта someObject оба эти метода могут быть вызваны с помощью:

someObject.someMethod(arg1, arg2, arg3)
someObject.someStaticMethod(arg1, arg2, arg3)

Самостоятельная ссылка, обсуждаемая в связанном вопросе, относится к именам пакетов, которые являются совершенно другим животным.

0 голосов
/ 08 марта 2012

Возможно, более уместно, что статические методы могут быть вызваны без вызова конструктора объектов: то есть, если класс foo имеет статический метод bar, тогда foo.bar () вызывает статический метод bar без вызова конструктора foo ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...