Class Matlab@folder类属性混淆

Class Matlab@folder类属性混淆,class,matlab,properties,attributes,directory,Class,Matlab,Properties,Attributes,Directory,我使用matlab中预先存在的代码,这些代码被组织成类。它使用@folder而不是classdef。我不完全确定它到底是如何工作的,它给我带来了一些麻烦 构造函数格式如下所示: function this = crazy_class(varargin) this.a = []; this.b = []; this = class(this, 'crazy_class'); end 我需要向类添加新属性,但如果我将其修改为: function this = craz

我使用matlab中预先存在的代码,这些代码被组织成类。它使用@folder而不是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:

 r = builtin('subsref', this, selector);
但就是这样。这个类如何知道什么是有效属性,什么是无效属性,而这些属性在任何其他文件中都没有提到。我应该寻找什么来改变这一切


编辑:这太尴尬了。。。我重新启动了Matlab,现在一切正常。我原以为通过键入命令clear classes或clear all就可以解决问题,但我想它需要完全重新启动。

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

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

您在这里使用的是“旧式”面向对象代码。Matlab7.6引入了“新型”面向对象语法(使用
classdef
等),但在此之前,您可以使用此处使用的样式,该样式仍然受支持,但已过时


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

您在这里使用的是“旧式”面向对象代码。Matlab7.6引入了“新型”面向对象语法(使用
classdef
等),但在此之前,您可以使用此处使用的样式,该样式仍然受支持,但已过时

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