我使用預先存在的代碼被組織成類MATLAB。它不使用classdef,而是使用@文件夾。我不完全確定它是如何工作的,並且它給我帶來了一些麻煩。Matlab的@folder類屬性混淆
構造函數的格式如下:
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和現在一切正常。我認爲通過輸入命令清除類,或清除所有會做的伎倆,但我想它需要一個完整的重新啓動。