Matlab @folder类属性混乱

时间:2012-08-22 21:12:51

标签: class matlab properties attributes directory

我在matlab中使用预先存在的代码组织成类。而不是使用classdef它使用@文件夹。我不完全确定它是如何工作的,它给我带来了一些麻烦。

构造函数格式如下:

function this = crazy_class(varargin)

    this.a = [];
    this.b = [];
    this = class(this, 'crazy_class'); 

end

我需要在类中添加一个新属性,但如果我这样修改它:

function this = crazy_class(varargin)

    this.a = [];
    this.b = [];
    this.newProperty = [];
    this = class(this, 'crazy_class'); 

end

我得到以下内容:

Number of fields for class crazy_class cannot be changed without clear classes.

我不喜欢在课堂上添加一个新的未指定属性。很公平,如果有一个classdef,添加一个新属性会很简单,但是我不知道怎么用@folder格式来做这个。

文件夹中没有.m文件或​​任何文件,指定该类的任何属性。我能找到的最接近的是重载函数:

subsasgn.m:

  this = builtin('subsasgn', this, selector, value);

subsref.m:<​​/ p>

 r = builtin('subsref', this, selector);

但就是这样。这个类如何知道什么是有效属性,什么不是在任何其他文件中没有提到它们。我该怎么想改变这个?

编辑:这很令人尴尬......我重新启动了Matlab,现在一切正常。我认为通过键入命令清除类,或清除所有可以完成的技巧,但我想它需要完全重启。

2 个答案:

答案 0 :(得分:2)

关键是,您现在必须执行命令“clear classes”,因为现有的类成员使用旧格式。 MATLAB告诉你这个事实本身。属性在crazy_class.m文件中定义。

答案 1 :(得分:1)

您正在使用“旧式”面向对象的代码。 MATLAB 7.6引入了“新式”面向对象的语法(使用classdef等),但在此之前你可以使用你在这里使用的样式,它仍然受支持但已过时。

我建议您查看过时的文档,该文档仍然可用here。它将解释语法的细节,以及如何使用这些类。

相关问题