【问题标题】:Jess pattern matching 'not' condition on ruleJess 模式匹配规则上的“非”条件
【发布时间】:2015-06-16 01:07:08
【问题描述】:

我在玩 jess。我想制定不使用'~'的规则。

这是我的代码。

(clear)
(reset)

(deftemplate person
    (slot name)
    (slot eyes)
    (slot hair))

(defrule person-without-brown-hair
    (person (name ?name) (hair ?hair&:(not brown)))
=>
    (printout t ?name " does not have brown hair." crlf))

(assert (person (name "Jeon") (eyes green) (hair brown)))
(assert (person (name "Park") (eyes blue) (hair red)))

(run)

我所期望的是可变的?头发不是棕色的。

【问题讨论】:

    标签: jess


    【解决方案1】:

    请注意,函数(not ...) 否定了它的参数。 TRUE 为真,FALSE 为假,任何其他符号为真。

    要测试一个槽值是否等于某个值,请使用(eq ...)(neq ...)(= ...)(<> ...)

    (defrule person-without-brown-hair
        (person (name ?name) (hair ?hair&:(neq ?hair brown)))
    =>
        (printout t ?name " does not have brown hair." crlf))
    

    结果:

    Park does not have brown hair.
    1
    

    直接匹配当然更好。

    【讨论】:

      猜你喜欢
      • 2018-05-15
      • 2022-11-10
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多