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