在制定规则可以计数之后,如何将事实布尔值放入插槽中?

时间:2019-06-23 06:01:14

标签: java jess

我想数一数事实,事实必须是布尔值。对于我的意图,我只需要计数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,并且此对象是布尔值,所以这就是为什么我需要了解这一点。 如果您对我有很好的建议,我会谦虚地接受。谢谢。

1 个答案:

答案 0 :(得分:1)

如果我对您的理解正确,那么您希望工作记忆中包含类似的内容

(testing (bole TRUE))
(testing (bole TRUE))
(testing (bole FALSE))

...,然后运行一些代码,告诉您有两个“真实的”事实。在杰西,这是不可能的:工作记忆中不能包含重复的事实。如果您尝试断言与现有事实相同的事实,则断言将返回FALSE,并且不会对工作内存进行任何更改。您可以使用额外的插槽来包含序列号或其他一些独特信息。