我想计算我的事实,而事实必须是布尔值。对于我的意图,我只需要计数为真。我的问题是,例如,如果我断言或使用 defact 在一个插槽中制作 4 个事实。工作记忆不会读取所有的事实。我尝试将另一个插槽与另一个数据(在这种情况下为名称)放在一起并且工作正常,但我不需要另一个插槽。我这样做只是为了尝试运行这段代码。还有其他选择吗?我来给你展示:(deftemplate testing (slot bole)(slot otro))(watch all)(defquery search-by-true "Finds true"(declare (variables ?ln))(testing (bole ?ln)(otro ?ot))) (deffacts data (testing (bole TRUE)(otro josue)) (testing (bole TRUE)(otro pedro)) (testing (bole FALSE)(otro pablo)))(reset) (bind ?result (run-query* search-by-true TRUE))(bind ?x 0) (while (?result next) (bind ?x (+ ?x 1)) ) (printout t (* ?x 0.3) crlf)我的意图是通过使用带有 java 代码和 jess 的对象来学习这一点。我将如何使用 JCheckbox 并且这个对象是布尔值,所以这就是为什么我需要理解这一点。如果您对我有好的建议,我会虚心接受。谢谢。
1 回答
UYOU
TA贡献1878条经验 获得超4个赞
如果我理解正确的话,你希望工作记忆包含类似
(testing (bole TRUE)) (testing (bole TRUE)) (testing (bole FALSE))
... 然后运行一些代码,告诉您有 2 个“bole TRUE”事实。这在 Jess 中是不可能的:工作记忆不能包含重复的事实。如果您尝试断言与现有事实相同的事实,断言将返回 FALSE,并且不会对工作记忆进行任何更改。您可以使用额外的插槽来包含序列号或其他一些独特的信息。
添加回答
举报
0/150
提交
取消