如何为MATLAB正确命名和组织文件类?

时间:2013-09-18 19:31:52

标签: matlab oop import package fully-qualified-naming

考虑以下目录结构,C:\magic是当前的MATLAB文件夹:

C:\magic
C:\magic\+wand
C:\magic\+hat

现在,wandhat是MATLAB包,可以由import wand.*import hat.*加载。

考虑到我可能想在+hat文件夹中为帽子创建一个抽象类:

% C:\magic\+hat\Hat.m
classdef Hat < handle
    % class implementation ...
end

和一些儿童班:

% C:\magic\+hat\TopHat.m
classdef (Sealed) TopHat < Hat
    % class implementation
    methods
        function this = TopHat()
            this = this@Hat();
        end
    end
end

但是当我这样做时:

> import hat.*
> ha = TopHat()

我收到以下错误:

Error using hat.TopHat
The specified superclass 'Hat' contains a parse error or cannot be found
on MATLAB's search path, possibly shadowed by another file with the same name.

尽管如此,我可以毫无错误地ha = Hat()

可能发生什么,这个问题的最佳解决方案是什么?

提前致谢!

1 个答案:

答案 0 :(得分:3)

尝试

classdef (Sealed) TopHat < hat.Hat

在MATLAB中没有“search-current-package-first” - 例程(抱歉这个坏名字:&gt;)。因此,要引用包中的类,您始终必须携带包名称 - 即使是在自己的classdef中引用类的静态方法。