所以我有一个程序可以将大量的子列表保存到文件中。每个子列表都有ID,名称和等级。 ID和名称存储为单引号字符串。示例(当我保存文件时,引号被删除,基础列表存储为:
[ [005,Chester,100], [001,Bob,99], [002,Andy,77] ... ]
我将此保存到文件的功能看起来像(X是子列表列表):
% ----- OPTION 2, STORE TO FILE
process(2, X) :-
open('hogwarts.txt',write,Stream),
write(Stream,X), write(Stream, '.'),
close(Stream),
nl, nl, menu(X).
我加载保存文件的功能如下:
% ----- OPTION 1, LOAD FROM FILE
process(1, X) :-
open('hogwarts.txt',read,Str),
read(Str,TOHERE),
close(Str),
write(TOHERE), nl, menu(TOHERE).
当我在加载保存的文件后写(TOHERE)时,我得到的内容如下:
[[2, _G316, 67], [1, _G328, 100]]
从保存的文件加载列表后,是否可以将子列表的元素保持为正确的类型? (将ID和名称字段保留为单引号字符串,并将等级作为数字) 感谢。
答案 0 :(得分:2)
你可以编辑文件吗?
然后我会建议:'Chester'
和'Bob'
。如果你将它们放入'
,那么它们就是条款。否则它们是自由变量。
答案 1 :(得分:2)
我建议在谓词中使用writeq
:
process(2, X) :-
open('hogwarts.txt',write,Stream),
writeq(Stream,X), write(Stream, '.'),
close(Stream),
nl, nl, menu(X).
这将保持原子中的引用,这是你需要的。