首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >其他缺陷模块如何从MAIN导入defclass和defclass?

其他缺陷模块如何从MAIN导入defclass和defclass?
EN

Stack Overflow用户
提问于 2015-06-05 11:32:13
回答 1查看 275关注 0票数 0

最近,我读到了一份用剪辑实现自动检测的文件。它显示了部分代码。结果表明,所有的防御类都属于主模块。但是在其他的防御模块中,他们的防御规则可以使用这些防御类。在advanced.docx中,它表示“预定义的主模块不导入或导出任何构造”。我也在剪辑界面上作证过。

例如:

代码语言:javascript
运行
复制
(defclass MAIN::telemetry-data
      (is-a USER)
      (slot name(type SYMBOL))
      (slot predict-value(type SYMBOL NUMBER)))



(defrule discrimination::analog-data-discriminate
(object (is-a telemetry-data ) (name ?name))
 =>
 (printout t "name:"?name crlf)
)

那么,如何才能不出错地使用遥测数据对象呢?我知道我可以在识别模块中定义类,以便执行正确的操作。但我只是想知道是否还有其他方法来使用主模块中由其他缺陷模块定义的构造。

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-05 17:03:24

这是“基本方案编制指南”第10.1节的有关段落:

所有预定义的系统类(参见9.2节)都属于主模块。但是,没有必要导入或导出系统类;它们总是在作用域内。除去前面的异常,预定义的主模块不会导入或导出任何构造。但是,与其他模块不同,主模块可以在启动或清除命令后重新定义一次。

您所要做的就是重新定义主模块:

代码语言:javascript
运行
复制
CLIPS> (clear)
CLIPS> (defmodule MAIN (export ?ALL))
CLIPS> 
(defclass MAIN::telemetry-data
   (is-a USER)
   (slot predict-value))
CLIPS> 
(defmodule discrimination (import MAIN ?ALL))
CLIPS> 
(defrule discrimination::analog-data-discriminate
   (object (is-a telemetry-data) (name ?name))
   =>
   (printout t "name: " ?name crlf))
CLIPS> 

您提供的代码片段还有其他问题。类型定义是可以的,但是名称槽已经为类预定义了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30665457

复制
相关文章

相似问题

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