我想算一下我的事实,事实必须是布尔值。对于我的意图,我只需要计数TRUE。我的问题是,例如,我是否断言或使用伪造在一个插槽中得出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))
(testing (bole TRUE)(otro carlos))
)
(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,并且此对象是布尔值,所以这就是为什么我需要了解这一点。
如果您对我有很好的建议,我会谦虚地接受。谢谢。
最佳答案
如果我对您的理解正确,则您希望工作记忆中包含以下内容
(testing (bole TRUE))
(testing (bole TRUE))
(testing (bole FALSE))
...然后运行一些代码,告诉您有两个“真实的”事实。在杰西,这是不可能的:工作记忆不能包含重复的事实。如果您尝试断言与现有事实相同的事实,则断言将返回FALSE,并且不会对工作内存进行任何更改。您可以使用额外的插槽来包含序列号或其他一些独特的信息。
关于java - 在制定规则可以计数之后,如何将事实 boolean 值放入插槽中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56721430/