为了账号安全,请及时绑定邮箱和手机立即绑定

如何更新 Jess 规则引擎中的事实?

如何更新 Jess 规则引擎中的事实?

慕尼黑的夜晚无繁华 2023-08-23 15:08:54
在 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)函数,看看它们是否可以满足你的需要。


查看完整回答
反对 回复 2023-08-23
  • 1 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信