【问题标题】:removing a multislot variable in JESS删除 JESS 中的多槽变量
【发布时间】:2014-10-29 01:49:29
【问题描述】:

我有一个包含 JESS 中的多槽的 deftemplate,如果触发规则,我想删除多槽中的一个变量。例如:

(deftemplate Person (slot name)
                    (multislot friends))
(assert (Person (name John)(friends Jimmy Joe Jessica)))

现在我想从好友栏删除 Jimmy。

非常感谢 阿里

【问题讨论】:

    标签: jess


    【解决方案1】:

    假设模板名称为Person,我已经修正了您问题中的一些遗漏。

    此规则将 Jimmy 从所有人员的所有 friends 中删除。

    (defrule KillJimmy
        ?p <- (Person (friends $?a Jimmy $?b))
    =>
        (modify ?p (friends (create$ $?a $?b)))
    )
    

    【讨论】:

    • 嘿,非常感谢劳恩,但如果我想从朋友那里删除多个,我应该为每个单独写一个规则吗?
    • 这取决于您希望/必须如何指定名称,这取决于它们的已知方式和时间(编译时间、运行时间)或输入等。
    • 我可以在这个deftemplate中添加每个朋友的年龄吗?例如有(人(朋友(吉米33)))???这有意义吗?
    • 一个人的年龄应该和一个人一起存储。如果需要朋友的年龄,您可以通过查找该朋友的 Person 事实来找到它并从中获取年龄。
    • 是否可以使用包列表存储每个朋友的年龄?如果我们只想要朋友的年龄?像 ?*Bag*= (bag create Person) (bag set ?*Bag* Fred 22) 之类的东西,并为所有朋友这样做?非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    相关资源
    最近更新 更多