如果嵌套 CLIPS
if nested CLIPS
nested if CLIPS 的正确语法是什么?
(defrule determina-si-tiene-gripe ""
?A <- (enfermedad (Gripe nose) (compostura))
=>
(if (si-o-no-p "Tiene Fiebre(si/no)? ")
(if (si-o-no-p "Tiene dolores en el cuerpo(si/no)? ")
if (si-o-no-p "Tiene dolor de garganta(si/no)? ")
then (modify ?A (Gripe si)(compostura "El paciente tiene un Resfrio"))
else (modify ?A (Gripe no)))
else (modify ?A (Gripe no)))
else (modify ?A (Gripe no))))
嵌套的 if-the-else 只是 then or else 分支中的另一个动作,如 doc:
中所述
Any number of allowable actions may be used inside of the then or else portion, including another if...then...else structure.
所以它应该是这样的
(if (si-o-no-p "Tiene Fiebre(si/no)? ")
then
(if (si-o-no-p "Tiene dolores en el cuerpo(si/no)? ")
then
(if (si-o-no-p "Tiene dolor de garganta(si/no)? ")
then
(modify ?A (Gripe si)(compostura "El paciente tiene un Resfrio"))
else (modify ?A (Gripe no)))
else (modify ?A (Gripe no)))
else (modify ?A (Gripe no))))
然而,您的示例似乎不需要嵌套 if,所需要的只是一个 if 和多个条件:
(if (and (si-o-no-p "Tiene Fiebre(si/no)? ")
(si-o-no-p "Tiene dolores en el cuerpo(si/no)? ")
(si-o-no-p "Tiene dolor de garganta(si/no)? "))
then
(modify ?A (Gripe si)(compostura "El paciente tiene un Resfrio"))
else (modify ?A (Gripe no)))
(似乎涉及用户输入,但这无论如何都可以工作)
nested if CLIPS 的正确语法是什么?
(defrule determina-si-tiene-gripe ""
?A <- (enfermedad (Gripe nose) (compostura))
=>
(if (si-o-no-p "Tiene Fiebre(si/no)? ")
(if (si-o-no-p "Tiene dolores en el cuerpo(si/no)? ")
if (si-o-no-p "Tiene dolor de garganta(si/no)? ")
then (modify ?A (Gripe si)(compostura "El paciente tiene un Resfrio"))
else (modify ?A (Gripe no)))
else (modify ?A (Gripe no)))
else (modify ?A (Gripe no))))
嵌套的 if-the-else 只是 then or else 分支中的另一个动作,如 doc:
中所述Any number of allowable actions may be used inside of the then or else portion, including another if...then...else structure.
所以它应该是这样的
(if (si-o-no-p "Tiene Fiebre(si/no)? ")
then
(if (si-o-no-p "Tiene dolores en el cuerpo(si/no)? ")
then
(if (si-o-no-p "Tiene dolor de garganta(si/no)? ")
then
(modify ?A (Gripe si)(compostura "El paciente tiene un Resfrio"))
else (modify ?A (Gripe no)))
else (modify ?A (Gripe no)))
else (modify ?A (Gripe no))))
然而,您的示例似乎不需要嵌套 if,所需要的只是一个 if 和多个条件:
(if (and (si-o-no-p "Tiene Fiebre(si/no)? ")
(si-o-no-p "Tiene dolores en el cuerpo(si/no)? ")
(si-o-no-p "Tiene dolor de garganta(si/no)? "))
then
(modify ?A (Gripe si)(compostura "El paciente tiene un Resfrio"))
else (modify ?A (Gripe no)))
(似乎涉及用户输入,但这无论如何都可以工作)