2017-04-07 5 views
0

Comment utiliser correctement l'opérateur 'et' dans Jess?Utilisation de l'opérateur 'et' Jess

Exemple de mon (mauvais) Code:

(test (and (>= ?x ?minx) (and (<= ?x ?maxx) (and (>= (+ ?x (- ?y1 ?y)) ?minx) (and (<= (+ ?x (- ?y1 ?y)) ?maxx) ... 

En outre, dans une si clause, comment l'utiliser?

Merci.

Répondre

0

J'ai ajouté quelques tirets à votre code pour essayer de comprendre ce que vous faites:

(test 
    (and (>= ?x ?minx) 
     (and (<= ?x ?maxx) 
       (and (>= (+ ?x (- ?y1 ?y)) ?minx) 
        (and (<= (+ ?x (- ?y1 ?y)) ?maxx) 

Il y a manque «) » s à la fin, mais je suppose que ce n'est pas la question. Fondamentalement, si vous essayez d'exprimer la conjonction d'un tas de conditions, vous avez juste besoin d'un and, et lui donner autant d'arguments que nécessaire. Ainsi, par exemple, quelque chose comme

(test 
    (and (>= ?x ?minx) 
     (<= ?x ?maxx) 
     (>= (+ ?x (- ?y1 ?y)) ?minx) 
     (<= (+ ?x (- ?y1 ?y)) ?maxx))) 

En ce qui if va, il est assez clairement documentée dans the manual:

(if (> ?x 100) then 
    (printout t "X is big" crlf) 
elif (> ?x 50) then 
    (printout t "X is average" crlf) 
else 
    (printout t "X is small" crlf)) 
+0

Merci, très utile! –