解析策略所以昨天我有一个日志文件其中有中,提供的log.txt的逗号分隔的条目,如下:登录使用Scala的
entry1.1,entry1.2,entry1.3
entry2.1,entry2,2,entry2.3
..........................
因此,与很多快乐,我继续创建了一个案例类:
case class LogEntry(
entry1:String,
entry2:String,
entry3:String
)
而且在阅读的情况下填充类的情况下类,如下所示:
line.split match {
case Array(entry1,entry2,entry3) => LogEntry(entry1,entry2,entry3)
}
现在问题出现时,我今天运行我的代码,我注意到LogEntry对象没有被创建。
我看着log.txt的今天提供给我,意识到条目已经改变:
我现在有:
entry1.1,entry1.2,entry1.3,entry1.4
entry2.1,entry2,2,entry2.3,entry2.4
...................................
我现在已经在各行的第四个条目。那么,这似乎没有什么大不了的,只需更改我的案例类与第四项(代码气味1),然后更改模式匹配(代码异味2)
有人可以建议我应该如何编写我的代码来处理有了这种情况。我想扩展我的代码而不是修改它。
感谢
如果你想在一个对象中表示你的日志文件,假设你需要在文件改变的时候改变对象。你总是可以将它存储为'List [String]'。 –
不应将文件存储为对象,因为它们将计算进一步向下推进逻辑,因此各行需要表示为对象。我只想知道日志行条目的适当抽象技术,以便我可以适应文件的模式更改,同时保持向后兼容性。我不确定如何将行条目存储为字符串列表可以提供帮助? –
@sc_ray你需要澄清你想用'LogEntry'类做什么。现在我没有看到使用可变长度'List [String]'作为@ bmorris591建议的优势。 –