我在 matlab 中使用预先存在的代码,这些代码被组织成类。它不使用classdef,而是使用@folder's。我不完全确定它是如何工作的,它给我带来了一些麻烦。
构造函数格式如下:
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 可以解决问题,但我想它需要完全重启。