如何添加全局变量以计算是或否响应的数量?

时间:2019-06-06 18:46:23

标签: clips jess

我正在研究一种营养诊断系统,在该系统中,向用户询问问题/症状,然后输入是或否进行响应。我想跟踪是或否的计数并使用它们进行计算。像在全局变量中存储是或否的计数。我已经有一个计算功能,但是不确定如何从用户输入中捕获是或否。我是刚接触Jess规则的人。在下面,我添加了工作规则代码。

(defrule menu::initialize
  (diagnosis)
  =>
  (assert 

  (question (ident q21) (text "Does the child's hair tend to be slight? (Yes or No)") (type yes-no))

  (question (ident q22) (text "Does the child's hair tend to be reddish? (Yes or No)") (type yes-no))

  (question (ident q23) (text "Is the child often affected by ISPA/ TBC? (Yes or No)") (type yes-no))

  (question (ident q24) (text "Does the child's hair tend to be easily falls off? (Yes or No)") (type yes-no))

  (question (ident q25) (text "Is there any abnormality on the child's complexion? (Yes or No)") (type yes-no))

  (question (ident q26) (text "Is there any swelling on the child's face? (Yes or No)") (type yes-no))

  )
  (menu::init)
)

2 个答案:

答案 0 :(得分:1)

您已经显示了一个名为“ menu :: initialize”的规则,该规则会插入一些称为“ question”的事实。您需要一个规则来激发这些事实,然后该规则将包含一条语句,将1加到全局变量中。您可以在Jess手册中找到规则和使用全局变量的示例。

请不要指望SO上有人为您做功课。

答案 1 :(得分:0)

我实现了上面建议的解决方案,并得到了我一直在寻找的东西。

我在下面的实现:。可能不是最佳解决方案,但它可以工作。谢谢SO:D

function getDetails(url){
    return new Promise((resolve, reject) => {
        fetch(url, {mode: 'no-cors'}).then(res => {
            resolve(res);      
        }, error => {
            console.log(err);
        })
    })
}

var u = "https://get.geojs.io/v1/ip/country.json";
getDetails(u).then(function(resp){
    console.log(resp);    
})