在 Jess 中,假设我的事实库由几个名称-值对组成,例如(node1 6.5) (node2 100) (node3 0.5)如何实现“更新”这些值,例如“node1”值从 6.5 到 100,而不需要手动撤回?另外,在某个规则被解雇后,有没有办法“重申”所有事实?
1 回答
蛊毒传说
TA贡献1895条经验 获得超3个赞
您使用 Jess 的(modify)
函数来修改事实。像这样的有序事实(node1 6.5)
在内部表示为带有名为 的单个槽的无序事实__data
,因此您可以利用这些知识来修改它们:
Jess> (assert (node1 6.5))
<Fact-0>
Jess> (modify 0 (__data 7.5))
<Fact-0>
Jess> (facts)
f-0 (MAIN::node1 7.5)
For a total of 1 facts in module MAIN.
现在,考虑到所有这些,为了提高效率,我仍然建议您使用无序模板,例如
(node (slot index) (slot value))
让你的事实看起来像
(node (index 1) (value 6.5))
(node (index 2) (value 100))
关于你的最后一个问题:我不太确定你的意思,但你可以查找构造(deffacts)和(reset)函数,看看它们是否可以满足你的需要。
添加回答
举报
0/150
提交
取消