1
雖然學習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