如果是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))))
答案 0 :(得分:0)
嵌套if-the-else只是其中的另一个动作,或者是分支,如doc中所述:
可以在then或else部分内使用任意数量的允许操作,包括另一个if ... then ... else结构。
所以它应该像
(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 (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)))
(似乎涉及用户输入,但无论如何这可能都有用)