我正在开发一个 .pl 文件中的算法,并在命令窗口上通过查询对其进行检查。 我使用动态变量和撤回/断言谓词。当我修改 pl 文件并点击“重新加载修改的文件”时,我有额外的事实,我不想要。
例如,一开始我有 计数器(0)。
然后我做一些事情,收回并断言这个计数器,它变成了 counter(7)。然后,当我重新加载修改后的 pl 文件时,我都有 计数器(0)。和 计数器(7)。
我怎样才能防止这种情况并且只有计数器(0)。一开始?
提前致谢。
最佳答案
如果您只使用这些动态事实来实现计数器,您应该考虑这是否是最好的方法。使用 assert/1
和 retract/1
会产生相当慢的代码。
您可以将计数器变量作为您在代码中传递的另一个谓词参数(您可能需要区分输入和输出,因此有两个额外的参数),或者使用全局变量(它们是非逻辑特征,不过,这有时是不行的)。
关于memory - Prolog - 如何清除内存并从头开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8417475/