我想在具有多字段变量的插槽中约束我允许的整数。
所以而不是:
CLIPS> (deftemplate foo (slot constr-integers (allowed-integers 1 3 4 7)))
我想做这样的事情:
CLIPS> (bind ?multifieldvariable (create$ 1 3 4 7))
(1 3 4 7)
CLIPS> (deftemplate bar (slot constr-integers (allowed-integers ?multifieldvariable)))
[PRNTUTIL2] Syntax Error: Check appropriate syntax for allowed-integers attribute.
ERROR:
(deftemplate MAIN::bar
(slot constr-integers (allowed-integers ?multifieldvariable
我知道如何解决这个问题,但也许有办法以更优雅的方式来解决这个问题。
祝你好运, 塞巴斯蒂安
答案 0 :(得分:0)
您只能通过使用构建函数调用动态创建deftemplate来实现:
CLIPS> (bind ?multifieldvariable (create$ 1 3 4 7))
(1 3 4 7)
CLIPS>
(build (str-cat "(deftemplate bar (slot constr-integers (allowed-integers "
(implode$ ?multifieldvariable)
")))"))
TRUE
CLIPS> (ppdeftemplate bar)
(deftemplate MAIN::bar
(slot constr-integers (allowed-integers 1 3 4 7)))
CLIPS>