在学习Prolog时,我正在编写一个基于文本的游戏,这是其中的一部分:
NewHealth is Health - Damage,
retract(stat(Target, health, Health)),
assert(stat(Target, health, NewHealth)),
我收到一个关于静态程序的错误,但是一个简单的搜索修复它,在运行游戏时我会快速说dynamic stat/3
。然而,在那之后,我在声明Health变量的文件中进一步出错:
stat(Target, health, Health),
我把问题缩小到这个(prolog控制台):
| ?- assert(test(a)).
yes
| ?- listing
test(a).
yes
| ?- dynamic test/1
yes
| ?- listing
yes
声明为动态后,它不再位于静态数据库中。但是通过谷歌搜索,找不到与我的问题相同的案例。我只需要查询和收回/断言一个数据库。