首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >剪辑初学者:如何使用Python和Clipspy在facts中添加自动计数器属性

剪辑初学者:如何使用Python和Clipspy在facts中添加自动计数器属性
EN

Stack Overflow用户
提问于 2021-09-27 11:32:50
回答 1查看 60关注 0票数 0

我想添加一个自动计数器作为属性实际上使用clipspy它意味着第一个事实,你断言计数为1,第二个为2,依此类推。因为我是剪辑,规则和事实编码的初学者,我不知道如何添加这一点。如果有人能帮我解决这个问题,我要提前感谢你。以下是我的代码:

代码语言:javascript
复制
import clips

template_string = """
(deftemplate person
  (slot name (type STRING))
  (slot surname (type STRING)))
"""
Dict = {'name': 'John', 'surname': 'Doe' }

env = clips.Environment()
env.build(template_string)

template = env.find_template('person')
fact = template.assert_fact(**Dict)
assert_fact = fact

env.run()

for fact in env.facts():
    print(fact)
EN

回答 1

Stack Overflow用户

发布于 2021-09-27 12:38:49

事实对象已经具有指示其断言位置的indexes

索引从1开始。

代码语言:javascript
复制
print(fact.index)

如果想要向事实本身添加增量计数器,可以使用插槽的defglobaldeffunctiondefault-dynamic属性来实现。

代码语言:javascript
复制
(defglobal ?*counter* = 0)

(deffunction increase () 
  (bind ?*counter* (+ ?*counter* 1)))

(deftemplate person  
  (slot name (type STRING))  
  (slot surname (type STRING)) 
  (slot counter (type INTEGER) (default-dynamic (increase))))   

(assert (person (name "John") (surname "Doe")))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69345854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档