从另一个静态方法中调用matlab静态方法

时间:2014-04-09 15:39:40

标签: matlab static-methods

是否可以从另一个静态方法调用静态方法,这两个方法属于同一个类?或者是否有一些我不知道的特殊语法?目前我正在尝试执行以下操作:

% Circle.m
classdef Circle
    methods (Static)
        function p = getPi
            p = 3.14;
        end

        function a = getArea( r )
            a = r * Circle.getPi * Circle.getPi;
        end
    end
end

然后:

>> Circle.getPi  
ans =  
3.1400  

>> Circle.getArea(123)  
Undefined variable "Circle" or class "Circle.getPi".  

Error in utils.Circle.getArea (line 8)  
            a = r * Circle.getPi * Circle.getPi; 

2 个答案:

答案 0 :(得分:1)

错误消息显示您的课程为utils.Circle,而不是Circle。您的课程被放置在包utils.

答案 1 :(得分:1)

请参阅名为Referencing Package Members Within Packages的文档页面中的"Packages Create Namespaces"部分。基本上它表示来自类实例的普通方法不需要包前缀,但是使用静态方法则需要它。显然这甚至在从另一个类方法调用静态方法时也适用!

  

除非导入包,否则对包中的包,函数和类的所有引用都必须使用包名前缀。 (请参阅导入类。)例如,使用以下语法调用包函数:

z = mypack.pkfcn(x,y);
     

请注意,定义不使用包前缀。例如,pkfcn.m函数的函数定义行仅包含函数名称:

     

[剪断]

     

调用类方法不需要包名,因为您有一个类的实例:

obj.myMethod(arg) or  
myMethod(obj,arg)
     

静态方法需要完整的班级名称

mypack.myClass.stMethod(arg)