brt*_*rtk 5 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
Run Code Online (Sandbox Code Playgroud)
进而:
>> 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;
Run Code Online (Sandbox Code Playgroud)
请参阅名为“包创建命名空间”的文档页面中的引用包内的包成员部分。基本上,它表示类实例中的普通方法不需要包前缀,但静态方法则需要包前缀。显然,即使从另一个类方法调用静态方法,这也适用!
除非您导入包,否则对包中的包、函数和类的所有引用都必须使用包名称前缀。(请参阅导入类。)例如,使用以下语法调用包函数:
Run Code Online (Sandbox Code Playgroud)z = mypack.pkfcn(x,y);请注意,定义不使用包前缀。例如,pkfcn.m 函数的函数定义行将仅包含函数名称:
[剪]
调用类方法不需要包名称,因为您有该类的实例:
Run Code Online (Sandbox Code Playgroud)obj.myMethod(arg) or myMethod(obj,arg)静态方法需要完整的类名:
Run Code Online (Sandbox Code Playgroud)mypack.myClass.stMethod(arg)