我試圖在Matlab中將枚舉類與非靜態方法結合起來。我希望創建一個'LogEvent'類,它具有函數'log',它將輸入參數作爲枚舉成員(例如LogEvent.INFO,LogEvent.ERROR或LogEvent.WARNING)和一個字符串,用於將該消息附加到文件中。我希望對不同的程序重複使用這個LogEvent類,因此類具有屬性'fileName',它在構造時指定,並引用輸出文件。下面是我的形成文件classdef代碼:Matlab - 將枚舉類與非靜態方法相結合
classdef LogEvent
%Class definition for logging events.
properties
fileName;
end
methods
function obj = LogEvent(outFile)
obj.fileName = outFile;
end
function log(obj,type,logStr)
switch (type)
case LogEvent.INFO
typeStr = 'INFO';
case LogEvent.WARNING
typeStr = 'WARNING';
case LogEvent.ERROR
typeStr = 'ERROR';
end
FID = fopen(obj.fileName,'a');
Str = sprintf('%s - %s: %s\n',datestr(now),typeStr,logStr);
fprintf(FID,Str);
fclose(FID);
end
end
enumeration
INFO,
WARNING,
ERROR
end
end
現在承認我沒有很多的編程經驗,所以我可能接近這個完全錯誤的方式,雖然我已經試着用搜索引擎這個問題,但收效甚微 - 我可能不知道某些特定的關鍵詞會「撞到頭上」。我相信,因爲需要創建這個類的多個實例(以引用不同的文件),'log'函數需要是非靜態的。我得到這個錯誤信息嘗試創建雖然在這個類的一個實例:
Error using LogEvent
While creating an instance of class 'LogEvent':
No value has been provided for the enumeration member named 'INFO'. For an
enumeration derived from a built-in class, a value must be provided for each
enumeration member.
Error in ZOHB (line 10)
obj.Log = LogEvent('ZOHB.log');
的「ZOHB」類中,我嘗試創建的LogEvent類的實例,並指定其作爲ZOHB類的屬性。
謝謝!經過測試和工作...... – Charlie