序言获得动态的事实值
问题描述:
虽然学习Prolog的,我写一个基于文本的游戏,这是它的一些:序言获得动态的事实值
NewHealth is Health - Damage,
retract(stat(Target, health, Health)),
assert(stat(Target, health, NewHealth)),
我跑的时候有大约静态程序错误,但是一个简单的搜索固定它,游戏我只想快速说出dynamic stat/3
。那可是之后,我还得到一个错误了,我宣布生变量的文件中:
stat(Target, health, Health),
我缩小了问题本(序言控制台):
| ?- assert(test(a)).
yes
| ?- listing
test(a).
yes
| ?- dynamic test/1
yes
| ?- listing
yes
被宣告动态后,它不再处于静态数据库中。但用谷歌搜索一个找不到与我的问题相同的案例。我只需要查询和撤消/断言单个数据库。
这与输入它有什么不同? – DJRyan
指令在编译时解析(例如,当Prolog加载您的文件时)。现在,我不清楚*当你输入时,但可能你的意思是* runtime *。这是数据,然后...... – CapelliC