导入类以访问常量值

时间:2016-08-25 09:34:29

标签: matlab constants

我在我的许多MATLAB包中定义了一个类。令我惊讶的是,在没有导入类定义的情况下,我无法访问我的类的常量属性。即使它是班级本身的一种方法。像这样:

classdef TestClass

    properties( Constant )

        c=0;
    end

    methods

        function obj = TestClass()        
        end

        function getC(obj)

            import test.TestClass;
            disp(TestClass.c);
        end
    end    
end

我只想检查我是否在这里做错了,或者这是在MATLAB中使用常量的正确方法。

1 个答案:

答案 0 :(得分:1)

由于您已将TestClass放在一个包中,因此Matlab需要知道在哪里查找此类的定义,即使它是类或函数内的引用。上述代码的替代方法可以是:

    function getC(obj)
        disp(test.TestClass.c);
    end

或者,如果在一个类中,可以从对象本身访问常量值。

    function getC(obj)
        disp(obj.c);
    end

如果这些都不适合您,您可能需要从内存刷新TestClass的classdef。这将导致matlab重新加载常量值,该值在首次解析classdef文件以确定类的结构时被拉入Matlab。这可以使用clear classes来完成,但是警告它也会清除所有其他类,变量和您设置的任何断点。

如果你想看看是否有必要,你可以查看元类对象,以确定Matlab"认为"你的班级结构应该是。您可以使用以下方法执行此操作。

mc = ?test.TestClass;
mc.PropertyList

您可能需要索引属性列表以查找您感兴趣的特定属性,但您要查找的内容是以下字段。

  • 姓名:' c'
  • 常数:1
  • DefaultValue:0