我试图在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