|
|
1
6
一个选项是将流作为槽而不是文件名,然后使用-open-file对其进行作用域:
然后您的流将自动关闭。 |
|
|
2
3
我认为我倾向于使类只存储完整的权威数据(您称之为数据结构?). 你不需要一个特殊的类来“加载+存储另一个类”。另外,这种方式还有一个无法言喻的不变量,即我的_数据将我的_文件的数据保存到当前的查找位置,这在我看来有点奇怪。 换一种方式:foo做什么?给定一个文件名,它将加载数据,并为您提供一个数据结构。这听起来像是一个功能。如果需要能够在线程中运行它,或者在加载记录之间触发事件,则类是在C++中自然完成的一种方法,但是对于Lisp中的那些类,您不需要一个类。 另外,请记住,在CLO中使用泛型方法不需要使用defclass。 我不知道您的数据的结构是什么,但是在类似的情况下,我创建了一个parse-one-chunk函数,它获取一个流并返回一个记录,然后在with-open文件的循环中创建一个完整的foo实例。如果不需要在具有打开文件扩展的范围之外使用流,则无需担心关闭它。 |