如何在不删除先前事实的情况下将事实声明为文件?
在下一行中,当我执行两次时,第二个事实会覆盖第一个事实:
tell('animal.txt'),write(Animal),nl,told.
但是,当我使用assert
或assertz
时,它将无效。
请帮帮我。
谢谢:)
答案 0 :(得分:0)
tell
会截断您要写入的文件。
请改用append('animal.txt')
。这将写入文件的末尾。
回复your comment:
我可以把它放在哪里?
您的意思是append/1
吗?
问题中的代码不应该放在type/2
定义中(附加替换告诉)吗? E.g。
type(1, Name) :-
append('animal.txt'),
write(mammal(Name)), nl,
told.