从另一个静态方法中调用matlab静态方法
是否可以从属于同一类的另一个静态方法调用一个静态方法?还是有一些我不知道的特殊语法?目前,我正在尝试执行以下操作:从另一个静态方法中调用matlab静态方法,matlab,static-methods,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;
% 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;
错误消息显示您的类是
utils.Circle
,而不是Circle
。您的类被放置在一个包utils中。
请参阅文档页面中名为的部分。基本上,它表示类实例中的普通方法不需要包前缀,但对于静态方法则需要包前缀。显然,这甚至在从另一个类方法调用静态方法时也适用
除非导入包,否则对包中的包、函数和类的所有引用都必须使用包名称前缀。(请参见导入类。)例如,使用以下语法调用包函数:
z = mypack.pkfcn(x,y);
请注意,定义不使用包前缀。例如,pkfcn.m函数的函数定义行只包含函数名:
[剪报]
调用类方法不需要包名称,因为您有该类的实例:
obj.myMethod(arg) or
myMethod(obj,arg)
静态方法需要完整的类名:
谢谢,你的回答和@Daniel给出的一样好(不包括非常有用的链接和冗长的示例),但是他早些时候回答了,所以我接受了他的回答。@brtk没关系。很高兴这有帮助。
mypack.myClass.stMethod(arg)