break 语句在剪辑中不起作用

break statement not working in function in clips

break 语句在我的代码中不起作用。

错误:中断函数在此上下文中无效。

(deffunction slabFunction (?q0 ?q1 ?q2)
(if(and(>= ?q0 36)(>= ?q1 36)(>= ?q2 36)) then
(printout t "slab 3" crlf)
(break))
(if(and(>= ?q0 24)(>= ?q1 24)(>= ?q2 24))
then 
(printout t "slab 2" crlf))
(if (and(>= ?q0 12)(>= ?q1 12)(>= ?q2 12))
then 
(printout t "slab 1" crlf)
(break))
)

请帮忙! 如果应用了 slab 3,则不应应用其他条件。如果没有,则完成 slab 2 检查,如果满足则适用。然后不再进行进一步检查。等等..

您使用 break 语句来终止循环(或在某些语言中为 switch 语句)。如果您希望函数在满足条件后终止,请使用 return 语句。

         CLIPS (6.31 6/12/19)
CLIPS> 
(deffunction slabFunction (?q0 ?q1 ?q2)
   (if (and (>= ?q0 36) (>= ?q1 36) (>= ?q2 36))
      then
      (printout t "slab 3" crlf)
      (return))
   (if (and (>= ?q0 24) (>= ?q1 24) (>= ?q2 24))
      then 
      (printout t "slab 2" crlf)
      (return))
   (if (and (>= ?q0 12) (>= ?q1 12) (>= ?q2 12))
      then 
      (printout t "slab 1" crlf)
      (return)))
CLIPS> (slabFunction  40 40 40)
slab 3
CLIPS> (slabFunction 26 26 45)
slab 2
CLIPS> (slabFunction 56 13 33)
slab 1
CLIPS> (slabFunction 10 3 2)
FALSE
CLIPS>